-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPromoFactory.json
More file actions
1 lines (1 loc) · 132 KB
/
Copy pathPromoFactory.json
File metadata and controls
1 lines (1 loc) · 132 KB
1
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createPromo","inputs":[{"name":"promotion","type":"tuple","internalType":"struct Promotion","components":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"endTime","type":"uint256","internalType":"uint256"},{"name":"promoAddr","type":"address","internalType":"address"},{"name":"streams","type":"address[]","internalType":"address[]"},{"name":"description","type":"string","internalType":"string"}]},{"name":"uri","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAvailablePromotions","inputs":[{"name":"stream","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct Promotion[]","components":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"endTime","type":"uint256","internalType":"uint256"},{"name":"promoAddr","type":"address","internalType":"address"},{"name":"streams","type":"address[]","internalType":"address[]"},{"name":"description","type":"string","internalType":"string"}]}],"stateMutability":"view"},{"type":"function","name":"getPaymentRecipientAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPaymentTokenAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPromoCreationPrice","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"paymentToken","type":"address","internalType":"address"},{"name":"paymentRecipient","type":"address","internalType":"address"},{"name":"promoCreationPrice","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentRecipient","inputs":[{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaymentToken","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPromoCreationPrice","inputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"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":"PaymentRecipientSet","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PaymentTokenSet","inputs":[{"name":"token","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"PromoCreationPriceSet","inputs":[{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PromotionCreated","inputs":[{"name":"marketer","type":"address","indexed":true,"internalType":"address"},{"name":"promotion","type":"tuple","indexed":false,"internalType":"struct Promotion","components":[{"name":"startTime","type":"uint256","internalType":"uint256"},{"name":"endTime","type":"uint256","internalType":"uint256"},{"name":"promoAddr","type":"address","internalType":"address"},{"name":"streams","type":"address[]","internalType":"address[]"},{"name":"description","type":"string","internalType":"string"}]}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"ZeroAddress","inputs":[]}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061001961001e565b6100d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561006e5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100cd5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61130b806100df6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80637f753c6f116100715780637f753c6f1461014a5780638da5cb5b1461015d578063d412e6071461018d578063dea182c11461019e578063f2fde38b146101af578063fb6223ac146101c257600080fd5b80630be270fe146100b95780631794bb3c146100e25780632983c4b8146100f757806344680c861461010a5780636a326ab11461012f578063715018a614610142575b600080fd5b6100cc6100c7366004610afb565b6101d5565b6040516100d99190610b68565b60405180910390f35b6100f56100f0366004610c43565b61035d565b005b6100f5610105366004610afb565b61048a565b6001546001600160a01b03165b6040516001600160a01b0390911681526020016100d9565b6100f561013d366004610afb565b610505565b6100f561058a565b6100f5610158366004610c84565b61059e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610117565b6002546040519081526020016100d9565b6000546001600160a01b0316610117565b6100f56101bd366004610afb565b6105e1565b6100f56101d0366004610c9d565b610624565b6001600160a01b0381166000908152600360209081526040808320805482518185028101850190935280835260609492939192909184015b828210156103525760008481526020908190206040805160a081018252600586029092018054835260018101548385015260028101546001600160a01b031683830152600381018054835181870281018701909452808452939491936060860193928301828280156102a857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161028a575b505050505081526020016004820180546102c190610d3c565b80601f01602080910402602001604051908101604052809291908181526020018280546102ed90610d3c565b801561033a5780601f1061030f5761010080835404028352916020019161033a565b820191906000526020600020905b81548152906001019060200180831161031d57829003601f168201915b5050505050815250508152602001906001019061020d565b505050509050919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156103a35750825b905060008267ffffffffffffffff1660011480156103c05750303b155b9050811580156103ce575080155b156103ec5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561041657845460ff60401b1916600160401b1785555b61041f336107b5565b61042888610505565b6104318761048a565b61043a8661059e565b831561048057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b806001600160a01b0381166104b25760405163d92e233d60e01b815260040160405180910390fd5b6104ba6107c6565b600180546001600160a01b0319166001600160a01b0384169081179091556040517f2921f72f5586ae66340225bd63c5e912305341e197c425ed60c008192ea4d47a90600090a25050565b806001600160a01b03811661052d5760405163d92e233d60e01b815260040160405180910390fd5b6105356107c6565b600080546001600160a01b0319166001600160a01b0384169081179091556040519081527fcb0aeffe884eb88fb2a31a2f3e4bd1d2763bdee48ba93b28c6e87501228cf7439060200160405180910390a15050565b6105926107c6565b61059c6000610821565b565b6105a66107c6565b60028190556040518181527ffa7987995fa0b05b25b994a66186f61818446c5c17fbb863f0145178fd4b373e9060200160405180910390a150565b6105e96107c6565b6001600160a01b03811661061857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61062181610821565b50565b60006106336060850185610d76565b905090506000816002546106479190610ddd565b600154600054919250610669916001600160a01b039081169133911684610892565b6106796060860160408701610afb565b6001600160a01b031663cada1089338686896040518563ffffffff1660e01b81526004016106aa9493929190610f61565b600060405180830381600087803b1580156106c457600080fd5b505af11580156106d8573d6000803e3d6000fd5b5050505060005b8281101561076c57600360006106f86060890189610d76565b8481811061070857610708610fa3565b905060200201602081019061071d9190610afb565b6001600160a01b031681526020808201929092526040016000908120805460018101825590825291902087916005020161075782826111bc565b505080806107649061126b565b9150506106df565b50336001600160a01b03167fd9b42bb096f4c62dfc76023d46bac952fbc443c1f23189362ce518e507e5d5ab866040516107a69190611284565b60405180910390a25050505050565b6107bd6108f2565b6106218161093b565b336107f87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461059c5760405163118cdaa760e01b815233600482015260240161060f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526108ec908590610943565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661059c57604051631afcd79f60e31b815260040160405180910390fd5b6105e96108f2565b60006109586001600160a01b038416836109ab565b9050805160001415801561097d57508080602001905181019061097b9190611297565b155b156109a657604051635274afe760e01b81526001600160a01b038416600482015260240161060f565b505050565b60606109b9838360006109c2565b90505b92915050565b6060814710156109e75760405163cd78605960e01b815230600482015260240161060f565b600080856001600160a01b03168486604051610a0391906112b9565b60006040518083038185875af1925050503d8060008114610a40576040519150601f19603f3d011682016040523d82523d6000602084013e610a45565b606091505b5091509150610a55868383610a61565b925050505b9392505050565b606082610a7657610a7182610abd565b610a5a565b8151158015610a8d57506001600160a01b0384163b155b15610ab657604051639996b31560e01b81526001600160a01b038516600482015260240161060f565b5080610a5a565b805115610acd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b038116811461062157600080fd5b600060208284031215610b0d57600080fd5b8135610a5a81610ae6565b60005b83811015610b33578181015183820152602001610b1b565b50506000910152565b60008151808452610b54816020860160208601610b18565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610c3457898403603f190186528251805185528881015189860152878101516001600160a01b039081168987015260608083015160a0918801829052805191880182905260c0880192908c019190865b82811015610c0257835182168552938d0193928d0192600101610be4565b5050505060808083015192508682038188015250610c208183610b3c565b978a01979550505091870191600101610b90565b50919998505050505050505050565b600080600060608486031215610c5857600080fd5b8335610c6381610ae6565b92506020840135610c7381610ae6565b929592945050506040919091013590565b600060208284031215610c9657600080fd5b5035919050565b600080600060408486031215610cb257600080fd5b833567ffffffffffffffff80821115610cca57600080fd5b9085019060a08288031215610cde57600080fd5b90935060208501359080821115610cf457600080fd5b818601915086601f830112610d0857600080fd5b813581811115610d1757600080fd5b876020828501011115610d2957600080fd5b6020830194508093505050509250925092565b600181811c90821680610d5057607f821691505b602082108103610d7057634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e19843603018112610d8d57600080fd5b83018035915067ffffffffffffffff821115610da857600080fd5b6020019150600581901b3603821315610dc057600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109bc576109bc610dc7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8183526000602080850194508260005b85811015610e5b578135610e4081610ae6565b6001600160a01b031687529582019590820190600101610e2d565b509495945050505050565b6000808335601e19843603018112610e7d57600080fd5b830160208101925035905067ffffffffffffffff811115610e9d57600080fd5b803603821315610dc057600080fd5b803582526020810135602083015260006040820135610eca81610ae6565b6001600160a01b03166040840152606082013536839003601e19018112610ef057600080fd5b820160208101903567ffffffffffffffff811115610f0d57600080fd5b8060051b3603821315610f1f57600080fd5b60a06060860152610f3460a086018284610e1d565b915050610f446080840184610e66565b8583036080870152610f57838284610df4565b9695505050505050565b6001600160a01b0385168152606060208201819052600090610f869083018587610df4565b8281036040840152610f988185610eac565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b5b81811015610fe45760008155600101610fd0565b5050565b67ffffffffffffffff83111561100057611000610fb9565b600160401b83111561101457611014610fb9565b80548382558084101561103a57816000526020600020611038828201868301610fcf565b505b50818160005260208060002060005b8681101561106c57833561105c81610ae6565b8282015592820192600101611049565b50505050505050565b6000808335601e1984360301811261108c57600080fd5b83018035915067ffffffffffffffff8211156110a757600080fd5b602001915036819003821315610dc057600080fd5b601f8211156109a657806000526020600020601f840160051c810160208510156110e35750805b6110f5601f850160051c830182610fcf565b5050505050565b67ffffffffffffffff83111561111457611114610fb9565b611128836111228354610d3c565b836110bc565b6000601f84116001811461115c57600085156111445750838201355b600019600387901b1c1916600186901b1783556110f5565b600083815260209020601f19861690835b8281101561118d578685013582556020948501946001909201910161116d565b50868210156111aa5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81358155602082013560018201556002810160408301356111dc81610ae6565b81546001600160a01b0319166001600160a01b0391909116179055606082013536839003601e1901811261120f57600080fd5b8201803567ffffffffffffffff81111561122857600080fd5b6020820191508060051b360382131561124057600080fd5b61124e818360038601610fe8565b505061125d6080830183611075565b6108ec8183600486016110fc565b60006001820161127d5761127d610dc7565b5060010190565b6020815260006109b96020830184610eac565b6000602082840312156112a957600080fd5b81518015158114610a5a57600080fd5b600082516112cb818460208701610b18565b919091019291505056fea2646970667358221220124f8d2e72b401bb1337c1b54bb7de6ddc94b2b3a6b1144edfc875c24dba6d3964736f6c63430008140033","sourceMap":"759:3619:68:-:0;;;1554:53;;;;;;;;;-1:-1:-1;1578:22:68;:20;:22::i;:::-;759:3619;;7711:422:23;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:23;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:23;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:23;-1:-1:-1;;;;;8035:33:23;;;;;8087:29;;158:50:81;;;8087:29:23;;146:2:81;131:18;8087:29:23;;;;;;;7981:146;7760:373;7711:422::o;14:200:81:-;759:3619:68;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80637f753c6f116100715780637f753c6f1461014a5780638da5cb5b1461015d578063d412e6071461018d578063dea182c11461019e578063f2fde38b146101af578063fb6223ac146101c257600080fd5b80630be270fe146100b95780631794bb3c146100e25780632983c4b8146100f757806344680c861461010a5780636a326ab11461012f578063715018a614610142575b600080fd5b6100cc6100c7366004610afb565b6101d5565b6040516100d99190610b68565b60405180910390f35b6100f56100f0366004610c43565b61035d565b005b6100f5610105366004610afb565b61048a565b6001546001600160a01b03165b6040516001600160a01b0390911681526020016100d9565b6100f561013d366004610afb565b610505565b6100f561058a565b6100f5610158366004610c84565b61059e565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610117565b6002546040519081526020016100d9565b6000546001600160a01b0316610117565b6100f56101bd366004610afb565b6105e1565b6100f56101d0366004610c9d565b610624565b6001600160a01b0381166000908152600360209081526040808320805482518185028101850190935280835260609492939192909184015b828210156103525760008481526020908190206040805160a081018252600586029092018054835260018101548385015260028101546001600160a01b031683830152600381018054835181870281018701909452808452939491936060860193928301828280156102a857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161028a575b505050505081526020016004820180546102c190610d3c565b80601f01602080910402602001604051908101604052809291908181526020018280546102ed90610d3c565b801561033a5780601f1061030f5761010080835404028352916020019161033a565b820191906000526020600020905b81548152906001019060200180831161031d57829003601f168201915b5050505050815250508152602001906001019061020d565b505050509050919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156103a35750825b905060008267ffffffffffffffff1660011480156103c05750303b155b9050811580156103ce575080155b156103ec5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561041657845460ff60401b1916600160401b1785555b61041f336107b5565b61042888610505565b6104318761048a565b61043a8661059e565b831561048057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b806001600160a01b0381166104b25760405163d92e233d60e01b815260040160405180910390fd5b6104ba6107c6565b600180546001600160a01b0319166001600160a01b0384169081179091556040517f2921f72f5586ae66340225bd63c5e912305341e197c425ed60c008192ea4d47a90600090a25050565b806001600160a01b03811661052d5760405163d92e233d60e01b815260040160405180910390fd5b6105356107c6565b600080546001600160a01b0319166001600160a01b0384169081179091556040519081527fcb0aeffe884eb88fb2a31a2f3e4bd1d2763bdee48ba93b28c6e87501228cf7439060200160405180910390a15050565b6105926107c6565b61059c6000610821565b565b6105a66107c6565b60028190556040518181527ffa7987995fa0b05b25b994a66186f61818446c5c17fbb863f0145178fd4b373e9060200160405180910390a150565b6105e96107c6565b6001600160a01b03811661061857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61062181610821565b50565b60006106336060850185610d76565b905090506000816002546106479190610ddd565b600154600054919250610669916001600160a01b039081169133911684610892565b6106796060860160408701610afb565b6001600160a01b031663cada1089338686896040518563ffffffff1660e01b81526004016106aa9493929190610f61565b600060405180830381600087803b1580156106c457600080fd5b505af11580156106d8573d6000803e3d6000fd5b5050505060005b8281101561076c57600360006106f86060890189610d76565b8481811061070857610708610fa3565b905060200201602081019061071d9190610afb565b6001600160a01b031681526020808201929092526040016000908120805460018101825590825291902087916005020161075782826111bc565b505080806107649061126b565b9150506106df565b50336001600160a01b03167fd9b42bb096f4c62dfc76023d46bac952fbc443c1f23189362ce518e507e5d5ab866040516107a69190611284565b60405180910390a25050505050565b6107bd6108f2565b6106218161093b565b336107f87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461059c5760405163118cdaa760e01b815233600482015260240161060f565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526108ec908590610943565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661059c57604051631afcd79f60e31b815260040160405180910390fd5b6105e96108f2565b60006109586001600160a01b038416836109ab565b9050805160001415801561097d57508080602001905181019061097b9190611297565b155b156109a657604051635274afe760e01b81526001600160a01b038416600482015260240161060f565b505050565b60606109b9838360006109c2565b90505b92915050565b6060814710156109e75760405163cd78605960e01b815230600482015260240161060f565b600080856001600160a01b03168486604051610a0391906112b9565b60006040518083038185875af1925050503d8060008114610a40576040519150601f19603f3d011682016040523d82523d6000602084013e610a45565b606091505b5091509150610a55868383610a61565b925050505b9392505050565b606082610a7657610a7182610abd565b610a5a565b8151158015610a8d57506001600160a01b0384163b155b15610ab657604051639996b31560e01b81526001600160a01b038516600482015260240161060f565b5080610a5a565b805115610acd5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b038116811461062157600080fd5b600060208284031215610b0d57600080fd5b8135610a5a81610ae6565b60005b83811015610b33578181015183820152602001610b1b565b50506000910152565b60008151808452610b54816020860160208601610b18565b601f01601f19169290920160200192915050565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015610c3457898403603f190186528251805185528881015189860152878101516001600160a01b039081168987015260608083015160a0918801829052805191880182905260c0880192908c019190865b82811015610c0257835182168552938d0193928d0192600101610be4565b5050505060808083015192508682038188015250610c208183610b3c565b978a01979550505091870191600101610b90565b50919998505050505050505050565b600080600060608486031215610c5857600080fd5b8335610c6381610ae6565b92506020840135610c7381610ae6565b929592945050506040919091013590565b600060208284031215610c9657600080fd5b5035919050565b600080600060408486031215610cb257600080fd5b833567ffffffffffffffff80821115610cca57600080fd5b9085019060a08288031215610cde57600080fd5b90935060208501359080821115610cf457600080fd5b818601915086601f830112610d0857600080fd5b813581811115610d1757600080fd5b876020828501011115610d2957600080fd5b6020830194508093505050509250925092565b600181811c90821680610d5057607f821691505b602082108103610d7057634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e19843603018112610d8d57600080fd5b83018035915067ffffffffffffffff821115610da857600080fd5b6020019150600581901b3603821315610dc057600080fd5b9250929050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109bc576109bc610dc7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8183526000602080850194508260005b85811015610e5b578135610e4081610ae6565b6001600160a01b031687529582019590820190600101610e2d565b509495945050505050565b6000808335601e19843603018112610e7d57600080fd5b830160208101925035905067ffffffffffffffff811115610e9d57600080fd5b803603821315610dc057600080fd5b803582526020810135602083015260006040820135610eca81610ae6565b6001600160a01b03166040840152606082013536839003601e19018112610ef057600080fd5b820160208101903567ffffffffffffffff811115610f0d57600080fd5b8060051b3603821315610f1f57600080fd5b60a06060860152610f3460a086018284610e1d565b915050610f446080840184610e66565b8583036080870152610f57838284610df4565b9695505050505050565b6001600160a01b0385168152606060208201819052600090610f869083018587610df4565b8281036040840152610f988185610eac565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b5b81811015610fe45760008155600101610fd0565b5050565b67ffffffffffffffff83111561100057611000610fb9565b600160401b83111561101457611014610fb9565b80548382558084101561103a57816000526020600020611038828201868301610fcf565b505b50818160005260208060002060005b8681101561106c57833561105c81610ae6565b8282015592820192600101611049565b50505050505050565b6000808335601e1984360301811261108c57600080fd5b83018035915067ffffffffffffffff8211156110a757600080fd5b602001915036819003821315610dc057600080fd5b601f8211156109a657806000526020600020601f840160051c810160208510156110e35750805b6110f5601f850160051c830182610fcf565b5050505050565b67ffffffffffffffff83111561111457611114610fb9565b611128836111228354610d3c565b836110bc565b6000601f84116001811461115c57600085156111445750838201355b600019600387901b1c1916600186901b1783556110f5565b600083815260209020601f19861690835b8281101561118d578685013582556020948501946001909201910161116d565b50868210156111aa5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81358155602082013560018201556002810160408301356111dc81610ae6565b81546001600160a01b0319166001600160a01b0391909116179055606082013536839003601e1901811261120f57600080fd5b8201803567ffffffffffffffff81111561122857600080fd5b6020820191508060051b360382131561124057600080fd5b61124e818360038601610fe8565b505061125d6080830183611075565b6108ec8183600486016110fc565b60006001820161127d5761127d610dc7565b5060010190565b6020815260006109b96020830184610eac565b6000602082840312156112a957600080fd5b81518015158114610a5a57600080fd5b600082516112cb818460208701610b18565b919091019291505056fea2646970667358221220124f8d2e72b401bb1337c1b54bb7de6ddc94b2b3a6b1144edfc875c24dba6d3964736f6c63430008140033","sourceMap":"759:3619:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3872:137;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1942:318;;;;;;:::i;:::-;;:::i;:::-;;3642:181;;;;;;:::i;:::-;;:::i;4247:111::-;4334:17;;-1:-1:-1;;;;;4334:17:68;4247:111;;;-1:-1:-1;;;;;3522:32:81;;;3504:51;;3492:2;3477:18;4247:111:68;3358:203:81;3475:161:68;;;;;;:::i;:::-;;:::i;3155:101:22:-;;;:::i;3318:151:68:-;;;;;;:::i;:::-;;:::i;2441:144:22:-;1313:22;2570:8;-1:-1:-1;;;;;2570:8:22;2441:144;;4015:108:68;4097:19;;4015:108;;3897:25:81;;;3885:2;3870:18;4015:108:68;3751:177:81;4129:112:68;4186:7;4220:13;-1:-1:-1;;;;;4220:13:68;4129:112;;3405:215:22;;;;;;:::i;:::-;;:::i;2730:539:68:-;;;;;;:::i;:::-;;:::i;3872:137::-;-1:-1:-1;;;;;3980:22:68;;;;;;:14;:22;;;;;;;;3973:29;;;;;;;;;;;;;;;;;3943:18;;3973:29;;3980:22;;3973:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3973:29:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3973:29:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3872:137;;;:::o;1942:318::-;8870:21:23;4302:15;;-1:-1:-1;;;4302:15:23;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:23;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:23;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:23;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:23;-1:-1:-1;;;5013:22:23;;;4979:67;2089:26:68::1;2104:10;2089:14;:26::i;:::-;2126:29;2142:12;2126:15;:29::i;:::-;2165:37;2185:16;2165:19;:37::i;:::-;2212:41;2234:18;2212:21;:41::i;:::-;5070:14:23::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:23;;;5142:14;;-1:-1:-1;5336:50:81;;5142:14:23;;5324:2:81;5309:18;5142:14:23;;;;;;;5066:101;4092:1081;;;;;1942:318:68;;;:::o;3642:181::-;3710:9;-1:-1:-1;;;;;1463:20:68;;1459:71;;1506:13;;-1:-1:-1;;;1506:13:68;;;;;;;;;;;1459:71;2334:13:22::1;:11;:13::i;:::-;3741:17:68::2;:29:::0;;-1:-1:-1;;;;;;3741:29:68::2;-1:-1:-1::0;;;;;3741:29:68;::::2;::::0;;::::2;::::0;;;3786:30:::2;::::0;::::2;::::0;-1:-1:-1;;3786:30:68::2;3642:181:::0;;:::o;3475:161::-;3535:5;-1:-1:-1;;;;;1463:20:68;;1459:71;;1506:13;;-1:-1:-1;;;1506:13:68;;;;;;;;;;;1459:71;2334:13:22::1;:11;:13::i;:::-;3562::68::2;:29:::0;;-1:-1:-1;;;;;;3562:29:68::2;-1:-1:-1::0;;;;;3562:29:68;::::2;::::0;;::::2;::::0;;;3607:22:::2;::::0;3504:51:81;;;3607:22:68::2;::::0;3492:2:81;3477:18;3607:22:68::2;;;;;;;3475:161:::0;;:::o;3155:101:22:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;3318:151:68:-;2334:13:22;:11;:13::i;:::-;3391:19:68::1;:27:::0;;;3434:28:::1;::::0;3897:25:81;;;3434:28:68::1;::::0;3885:2:81;3870:18;3434:28:68::1;;;;;;;3318:151:::0;:::o;3405:215:22:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:22;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:22;;3562:1:::1;3534:31;::::0;::::1;3504:51:81::0;3477:18;;3534:31:22::1;;;;;;;;3485:91;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;2730:539:68:-;2821:20;2844:17;;;;:9;:17;:::i;:::-;:24;;2821:47;;2878:13;2916:12;2894:19;;:34;;;;:::i;:::-;2982:17;;;2939:13;2878:50;;-1:-1:-1;2939:68:68;;-1:-1:-1;;;;;2939:13:68;;;;2970:10;;2982:17;2878:50;2939:30;:68::i;:::-;3024:19;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3017:36:68;;3054:10;3066:3;;3071:9;3017:64;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3097:9;3092:116;3112:12;3108:1;:16;3092:116;;;3145:14;:36;3160:17;;;;:9;:17;:::i;:::-;3178:1;3160:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3145:36:68;;;;;;;;;;;;;-1:-1:-1;3145:36:68;;;:52;;;;;;;;;;;;;3187:9;;3145:52;;;;3187:9;3145:52;;:::i;:::-;;;3126:3;;;;;:::i;:::-;;;;3092:116;;;;3240:10;-1:-1:-1;;;;;3223:39:68;;3252:9;3223:39;;;;;;:::i;:::-;;;;;;;;2811:458;;2730:539;;;:::o;1847:127:22:-;6931:20:23;:18;:20::i;:::-;1929:38:22::1;1954:12;1929:24;:38::i;2658:162::-:0;966:10:26;2717:7:22;1313:22;2570:8;-1:-1:-1;;;;;2570:8:22;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:22;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:22;;966:10:26;2763:40:22;;;3504:51:81;3477:18;;2763:40:22;3358:203:81;3774:248:22;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:22;;-1:-1:-1;;;;;3941:19:22;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1702:188:47:-;1829:53;;;-1:-1:-1;;;;;14939:15:81;;;1829:53:47;;;14921:34:81;14991:15;;14971:18;;;14964:43;15023:18;;;;15016:34;;;1829:53:47;;;;;;;;;;14856:18:81;;;;1829:53:47;;;;;;;;-1:-1:-1;;;;;1829:53:47;-1:-1:-1;;;1829:53:47;;;1802:81;;1822:5;;1802:19;:81::i;:::-;1702:188;;;;:::o;7084:141:23:-;8870:21;8560:40;-1:-1:-1;;;8560:40:23;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:23;;;;;;;;;;;1980:235:22;6931:20:23;:18;:20::i;4059:629:47:-;4478:23;4504:33;-1:-1:-1;;;;;4504:27:47;;4532:4;4504:27;:33::i;:::-;4478:59;;4551:10;:17;4572:1;4551:22;;:57;;;;;4589:10;4578:30;;;;;;;;;;;;:::i;:::-;4577:31;4551:57;4547:135;;;4631:40;;-1:-1:-1;;;4631:40:47;;-1:-1:-1;;;;;3522:32:81;;4631:40:47;;;3504:51:81;3477:18;;4631:40:47;3358:203:81;4547:135:47;4129:559;4059:629;;:::o;2705:151:51:-;2780:12;2811:38;2833:6;2841:4;2847:1;2811:21;:38::i;:::-;2804:45;;2705:151;;;;;:::o;3180:392::-;3279:12;3331:5;3307:21;:29;3303:108;;;3359:41;;-1:-1:-1;;;3359:41:51;;3394:4;3359:41;;;3504:51:81;3477:18;;3359:41:51;3358:203:81;3303:108:51;3421:12;3435:23;3462:6;-1:-1:-1;;;;;3462:11:51;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;;;;3180:392;;;;;;:::o;4625:582::-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:51;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:51;;-1:-1:-1;;;;;3522:32:81;;5121:24:51;;;3504:51:81;3477:18;;5121:24:51;3358:203:81;5041:119:51;-1:-1:-1;5180:10:51;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:51;;;;;;;;;;;14:131:81;-1:-1:-1;;;;;89:31:81;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:250::-;487:1;497:113;511:6;508:1;505:13;497:113;;;587:11;;;581:18;568:11;;;561:39;533:2;526:10;497:113;;;-1:-1:-1;;644:1:81;626:16;;619:27;402:250::o;657:271::-;699:3;737:5;731:12;764:6;759:3;752:19;780:76;849:6;842:4;837:3;833:14;826:4;819:5;815:16;780:76;:::i;:::-;910:2;889:15;-1:-1:-1;;885:29:81;876:39;;;;917:4;872:50;;657:271;-1:-1:-1;;657:271:81:o;933:1959::-;1131:4;1160:2;1200;1189:9;1185:18;1230:2;1219:9;1212:21;1253:6;1288;1282:13;1319:6;1311;1304:22;1345:2;1335:12;;1378:2;1367:9;1363:18;1356:25;;1440:2;1430:6;1427:1;1423:14;1412:9;1408:30;1404:39;1478:2;1470:6;1466:15;1499:1;1520;1530:1333;1546:6;1541:3;1538:15;1530:1333;;;1615:22;;;-1:-1:-1;;1611:36:81;1599:49;;1671:13;;1781:9;;1766:25;;1834:11;;;1828:18;1811:15;;;1804:43;1886:11;;;1880:18;-1:-1:-1;;;;;1977:21:81;;;1960:15;;;1953:46;2022:4;2067:11;;;2061:18;1707:4;2099:15;;;2092:27;;;2180:21;;1738:15;;;2214:24;;;2272:3;2260:16;;;2305:23;;;;2180:21;2352:1;2366:218;2382:8;2377:3;2374:17;2366:218;;;2463:15;;2459:24;;2445:39;;2510:14;;;;2553:17;;;;2410:1;2401:11;2366:218;;;2370:3;;;;2607:4;2660:2;2656;2652:11;2646:18;2624:40;;2712:6;2705:5;2701:18;2696:2;2688:6;2684:15;2677:43;;2743:40;2777:5;2761:14;2743:40;:::i;:::-;2841:12;;;;2733:50;-1:-1:-1;;;2806:15:81;;;;1572:1;1563:11;1530:1333;;;-1:-1:-1;2880:6:81;;933:1959;-1:-1:-1;;;;;;;;;933:1959:81:o;2897:456::-;2974:6;2982;2990;3043:2;3031:9;3022:7;3018:23;3014:32;3011:52;;;3059:1;3056;3049:12;3011:52;3098:9;3085:23;3117:31;3142:5;3117:31;:::i;:::-;3167:5;-1:-1:-1;3224:2:81;3209:18;;3196:32;3237:33;3196:32;3237:33;:::i;:::-;2897:456;;3289:7;;-1:-1:-1;;;3343:2:81;3328:18;;;;3315:32;;2897:456::o;3566:180::-;3625:6;3678:2;3666:9;3657:7;3653:23;3649:32;3646:52;;;3694:1;3691;3684:12;3646:52;-1:-1:-1;3717:23:81;;3566:180;-1:-1:-1;3566:180:81:o;3933:860::-;4043:6;4051;4059;4112:2;4100:9;4091:7;4087:23;4083:32;4080:52;;;4128:1;4125;4118:12;4080:52;4168:9;4155:23;4197:18;4238:2;4230:6;4227:14;4224:34;;;4254:1;4251;4244:12;4224:34;4277:22;;;;4333:3;4315:16;;;4311:26;4308:46;;;4350:1;4347;4340:12;4308:46;4373:2;;-1:-1:-1;4428:2:81;4413:18;;4400:32;;4444:16;;;4441:36;;;4473:1;4470;4463:12;4441:36;4511:8;4500:9;4496:24;4486:34;;4558:7;4551:4;4547:2;4543:13;4539:27;4529:55;;4580:1;4577;4570:12;4529:55;4620:2;4607:16;4646:2;4638:6;4635:14;4632:34;;;4662:1;4659;4652:12;4632:34;4707:7;4702:2;4693:6;4689:2;4685:15;4681:24;4678:37;4675:57;;;4728:1;4725;4718:12;4675:57;4759:2;4755;4751:11;4741:21;;4781:6;4771:16;;;;;3933:860;;;;;:::o;4798:380::-;4877:1;4873:12;;;;4920;;;4941:61;;4995:4;4987:6;4983:17;4973:27;;4941:61;5048:2;5040:6;5037:14;5017:18;5014:38;5011:161;;5094:10;5089:3;5085:20;5082:1;5075:31;5129:4;5126:1;5119:15;5157:4;5154:1;5147:15;5011:161;;4798:380;;;:::o;5397:545::-;5490:4;5496:6;5556:11;5543:25;5650:2;5646:7;5635:8;5619:14;5615:29;5611:43;5591:18;5587:68;5577:96;;5669:1;5666;5659:12;5577:96;5696:33;;5748:20;;;-1:-1:-1;5791:18:81;5780:30;;5777:50;;;5823:1;5820;5813:12;5777:50;5856:4;5844:17;;-1:-1:-1;5907:1:81;5903:14;;;5887;5883:35;5873:46;;5870:66;;;5932:1;5929;5922:12;5870:66;5397:545;;;;;:::o;5947:127::-;6008:10;6003:3;5999:20;5996:1;5989:31;6039:4;6036:1;6029:15;6063:4;6060:1;6053:15;6079:168;6152:9;;;6183;;6200:15;;;6194:22;;6180:37;6170:71;;6221:18;;:::i;6252:267::-;6341:6;6336:3;6329:19;6393:6;6386:5;6379:4;6374:3;6370:14;6357:43;-1:-1:-1;6445:1:81;6420:16;;;6438:4;6416:27;;;6409:38;;;;6501:2;6480:15;;;-1:-1:-1;;6476:29:81;6467:39;;;6463:50;;6252:267::o;6524:522::-;6624:6;6619:3;6612:19;6594:3;6650:4;6679:2;6674:3;6670:12;6663:19;;6705:5;6728:1;6738:283;6752:6;6749:1;6746:13;6738:283;;;6829:6;6816:20;6849:33;6874:7;6849:33;:::i;:::-;-1:-1:-1;;;;;6907:33:81;6895:46;;6961:12;;;;6996:15;;;;6937:1;6767:9;6738:283;;;-1:-1:-1;7037:3:81;;6524:522;-1:-1:-1;;;;;6524:522:81:o;7051:501::-;7110:5;7117:6;7177:3;7164:17;7263:2;7259:7;7248:8;7232:14;7228:29;7224:43;7204:18;7200:68;7190:96;;7282:1;7279;7272:12;7190:96;7310:33;;7414:4;7401:18;;;-1:-1:-1;7362:21:81;;-1:-1:-1;7442:18:81;7431:30;;7428:50;;;7474:1;7471;7464:12;7428:50;7521:6;7505:14;7501:27;7494:5;7490:39;7487:59;;;7542:1;7539;7532:12;7557:1136;7661:5;7648:19;7643:3;7636:32;7724:4;7717:5;7713:16;7700:30;7693:4;7688:3;7684:14;7677:54;7618:3;7779:4;7772:5;7768:16;7755:30;7794:33;7819:7;7794:33;:::i;:::-;-1:-1:-1;;;;;7859:33:81;7852:4;7843:14;;7836:57;7952:4;7941:16;;7928:30;8009:14;8005:26;;;-1:-1:-1;;8001:40:81;7977:65;;7967:93;;8056:1;8053;8046:12;7967:93;8084:30;;8195:4;8182:18;;;8137:21;8223:18;8212:30;;8209:50;;;8255:1;8252;8245:12;8209:50;8311:6;8308:1;8304:14;8288;8284:35;8275:7;8271:49;8268:69;;;8333:1;8330;8323:12;8268:69;8369:4;8362;8357:3;8353:14;8346:28;8395:70;8459:4;8454:3;8450:14;8442:6;8433:7;8395:70;:::i;:::-;8383:82;;;8508:56;8558:4;8551:5;8547:16;8540:5;8508:56;:::i;:::-;8606:3;8600:4;8596:14;8589:4;8584:3;8580:14;8573:38;8627:60;8682:4;8668:12;8654;8627:60;:::i;:::-;8620:67;7557:1136;-1:-1:-1;;;;;;7557:1136:81:o;8698:564::-;-1:-1:-1;;;;;8971:32:81;;8953:51;;9040:2;9035;9020:18;;9013:30;;;-1:-1:-1;;9066:62:81;;9109:18;;9101:6;9093;9066:62;:::i;:::-;9176:9;9168:6;9164:22;9159:2;9148:9;9144:18;9137:50;9204:52;9249:6;9241;9204:52;:::i;:::-;9196:60;8698:564;-1:-1:-1;;;;;;;8698:564:81:o;9267:127::-;9328:10;9323:3;9319:20;9316:1;9309:31;9359:4;9356:1;9349:15;9383:4;9380:1;9373:15;9399:127;9460:10;9455:3;9451:20;9448:1;9441:31;9491:4;9488:1;9481:15;9515:4;9512:1;9505:15;9668:147;9731:78;9749:3;9742:5;9739:14;9731:78;;;9805:1;9791:16;;9776:1;9765:13;9731:78;;;9668:147;;:::o;9820:852::-;9944:18;9939:3;9936:27;9933:53;;;9966:18;;:::i;:::-;-1:-1:-1;;;10001:3:81;9998:29;9995:55;;;10030:18;;:::i;:::-;10079:3;10073:10;10104:3;10099;10092:16;10128:6;10123:3;10120:15;10117:183;;;10168:3;10165:1;10158:14;10210:4;10207:1;10197:18;10228:62;10282:6;10276:4;10272:17;10266:3;10260:4;10256:14;10228:62;:::i;:::-;;10117:183;;10323:3;10345;10342:1;10335:14;10368:4;10408:2;10405:1;10395:16;10429:1;10439:227;10453:3;10450:1;10447:10;10439:227;;;10525:6;10512:20;10545:31;10570:5;10545:31;:::i;:::-;10634:14;;;10627:29;10599:15;;;;10472:1;10465:9;10439:227;;;10443:3;;;;9820:852;;;:::o;10677:516::-;10749:4;10755:6;10815:11;10802:25;10909:2;10905:7;10894:8;10878:14;10874:29;10870:43;10850:18;10846:68;10836:96;;10928:1;10925;10918:12;10836:96;10955:33;;11007:20;;;-1:-1:-1;11050:18:81;11039:30;;11036:50;;;11082:1;11079;11072:12;11036:50;11115:4;11103:17;;-1:-1:-1;11146:14:81;11142:27;;;11132:38;;11129:58;;;11183:1;11180;11173:12;11198:419;11300:2;11295:3;11292:11;11289:322;;;11336:5;11333:1;11326:16;11380:4;11377:1;11367:18;11450:2;11438:10;11434:19;11431:1;11427:27;11421:4;11417:38;11486:4;11474:10;11471:20;11468:47;;;-1:-1:-1;11509:4:81;11468:47;11528:73;11595:2;11590:3;11586:12;11583:1;11579:20;11573:4;11569:31;11556:11;11528:73;:::i;:::-;;;11198:419;;;:::o;11793:1201::-;11901:18;11896:3;11893:27;11890:53;;;11923:18;;:::i;:::-;11952:94;12042:3;12002:38;12034:4;12028:11;12002:38;:::i;:::-;11996:4;11952:94;:::i;:::-;12072:1;12097:2;12092:3;12089:11;12114:1;12109:627;;;;12780:1;12797:3;12794:93;;;-1:-1:-1;12853:19:81;;;12840:33;12794:93;-1:-1:-1;;11750:1:81;11746:11;;;11742:24;11738:29;11728:40;11774:1;11770:11;;;11725:57;12900:78;;12082:906;;12109:627;9615:1;9608:14;;;9652:4;9639:18;;-1:-1:-1;;12145:17:81;;;12257:9;12279:229;12293:7;12290:1;12287:14;12279:229;;;12382:19;;;12369:33;12354:49;;12489:4;12474:20;;;;12442:1;12430:14;;;;12309:12;12279:229;;;12283:3;12536;12527:7;12524:16;12521:159;;;12660:1;12656:6;12650:3;12644;12641:1;12637:11;12633:21;12629:34;12625:39;12612:9;12607:3;12603:19;12590:33;12586:79;12578:6;12571:95;12521:159;;;12723:1;12717:3;12714:1;12710:11;12706:19;12700:4;12693:33;12082:906;;11793:1201;;;:::o;12999:1255::-;13168:5;13155:19;13149:4;13142:33;13229:2;13222:5;13218:14;13205:28;13201:1;13195:4;13191:12;13184:50;13271:1;13265:4;13261:12;13321:2;13314:5;13310:14;13297:28;13334:33;13359:7;13334:33;:::i;:::-;13402:17;;-1:-1:-1;;;;;;13398:60:81;-1:-1:-1;;;;;13460:33:81;;;;13395:99;13376:119;;13554:2;13543:14;;13530:28;13609:14;13605:26;;;-1:-1:-1;;13601:40:81;13577:65;;13567:93;;13656:1;13653;13646:12;13567:93;13681:30;;13734:18;;13775;13764:30;;13761:50;;;13807:1;13804;13797:12;13761:50;13844:2;13838:4;13834:13;13820:27;;13898:6;13895:1;13891:14;13875;13871:35;13863:6;13859:48;13856:68;;;13920:1;13917;13910:12;13856:68;13933:104;14030:6;14022;14018:1;14012:4;14008:12;13933:104;:::i;:::-;;;14080:60;14135:3;14128:5;14124:15;14117:5;14080:60;:::i;:::-;14149:99;14234:13;14221:11;14217:1;14211:4;14207:12;14149:99;:::i;14259:135::-;14298:3;14319:17;;;14316:43;;14339:18;;:::i;:::-;-1:-1:-1;14386:1:81;14375:13;;14259:135::o;14399:277::-;14586:2;14575:9;14568:21;14549:4;14606:64;14666:2;14655:9;14651:18;14643:6;14606:64;:::i;15061:277::-;15128:6;15181:2;15169:9;15160:7;15156:23;15152:32;15149:52;;;15197:1;15194;15187:12;15149:52;15229:9;15223:16;15282:5;15275:13;15268:21;15261:5;15258:32;15248:60;;15304:1;15301;15294:12;15343:287;15472:3;15510:6;15504:13;15526:66;15585:6;15580:3;15573:4;15565:6;15561:17;15526:66;:::i;:::-;15608:16;;;;;15343:287;-1:-1:-1;;15343:287:81:o","linkReferences":{}},"methodIdentifiers":{"createPromo((uint256,uint256,address,address[],string),string)":"fb6223ac","getAvailablePromotions(address)":"0be270fe","getPaymentRecipientAddress()":"44680c86","getPaymentTokenAddress()":"dea182c1","getPromoCreationPrice()":"d412e607","initialize(address,address,uint256)":"1794bb3c","owner()":"8da5cb5b","renounceOwnership()":"715018a6","setPaymentRecipient(address)":"2983c4b8","setPaymentToken(address)":"6a326ab1","setPromoCreationPrice(uint256)":"7f753c6f","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"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\":\"recipient\",\"type\":\"address\"}],\"name\":\"PaymentRecipientSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"PromoCreationPriceSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"marketer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"promoAddr\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"streams\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"indexed\":false,\"internalType\":\"struct Promotion\",\"name\":\"promotion\",\"type\":\"tuple\"}],\"name\":\"PromotionCreated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"promoAddr\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"streams\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct Promotion\",\"name\":\"promotion\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"createPromo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"stream\",\"type\":\"address\"}],\"name\":\"getAvailablePromotions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"promoAddr\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"streams\",\"type\":\"address[]\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct Promotion[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPaymentRecipientAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPaymentTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPromoCreationPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"paymentRecipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"promoCreationPrice\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"setPaymentRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setPaymentToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPromoCreationPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"createPromo((uint256,uint256,address,address[],string),string)\":{\"details\":\"This function calculates the price for creating a promo based on the number of streams specified in the `promotion` struct, multiplied by the `_promoCreationPrice`\",\"params\":{\"promotion\":\"A `Promotion` struct containing the details of the promotion\",\"uri\":\"The URI for the promo metadata\"}},\"initialize(address,address,uint256)\":{\"params\":{\"paymentRecipient\":\"The address that will receive payments\",\"paymentToken\":\"The address of the token used for payments\",\"promoCreationPrice\":\"The price (in paymentToken units) for creating a new promo\"}},\"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.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"title\":\"PromoFactory contract\",\"version\":1},\"userdoc\":{\"errors\":{\"ZeroAddress()\":[{\"notice\":\"Errors\"}]},\"events\":{\"PaymentRecipientSet(address)\":{\"notice\":\"Events\"}},\"kind\":\"user\",\"methods\":{\"createPromo((uint256,uint256,address,address[],string),string)\":{\"notice\":\"Creates a new promo with specified promotion details and URI\"},\"initialize(address,address,uint256)\":{\"notice\":\"Initializes the PromoFactory contract\"}},\"notice\":\"A contract that creates promotions using the Promo collection. Every promotion is a nft (ERC721). The contract is managed by Owner role. The owner can set on a smart contract: - the price of creating a promotional share - payment token - payee\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PromoFactory.sol\":\"PromoFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":src/=src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0x48efca78ce4e1a9f74d3ca8539bb53d04b116e507c10cd9e0df6105b8a6ae420\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d9f5e03898857a187d99bd0766daf725abe87f454db82ac6286544d8cb4532f\",\"dweb:/ipfs/QmXFNXaNuxvGCLNL9xAFbvEgRmXDuxw4Ukf9tddiAHDq59\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0x7e68925d3373bd2baa7ac36839c464b2e77b67764201c4e0196d62699ee220b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0896e7ff605a131ca982da1175d798c19588852dc74329f5c3675ac76cb80ff\",\"dweb:/ipfs/QmdePp3XmXaKz4A9qqj6enFuqERWvJoN4uRmFzu2cwLPX8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC4906.sol\":{\"keccak256\":\"0xb31b86c03f4677dcffa4655285d62433509513be9bafa0e04984565052d34e44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a89c6fb0cd5fef4244500b633f63def9f2bb2134debb961e590bd5a2910662fd\",\"dweb:/ipfs/QmNqWyCxyopvb99RbRomPpfTZGXRi5MnzgpFXE2BFLLgMc\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b\",\"dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/Promo.sol\":{\"keccak256\":\"0x8787b77e48c8f1296fc87a335551d134b9f54ccfa016d3f0031cf5d13c106e88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fed90cf381a0cbe821715fcf657e9ddd7924df8d50de7e99e8232491fc2dd04a\",\"dweb:/ipfs/QmTMcjrsV4DPhjWEaJAj2NUjN5EueEED8SPdymya3huuBs\"]},\"src/PromoFactory.sol\":{\"keccak256\":\"0x33cd102c03fb2af42a0c91bb4b7d5ab1f6005fade933d2c24f15202f8cd1dde6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a7c888e0634872e2e6cb1d3eed60133cc4e076c73d2bbf850528b5e7d88bf6a\",\"dweb:/ipfs/QmUUPNsD8vuhB6SyHEW6eFXgzW6wcZz38FK7mMkCzDJ9Jt\"]},\"src/interfaces/IPromo.sol\":{\"keccak256\":\"0xd726b5236c7dd81889f4a6791bed070c87d823822243a458b2db66251a94cd13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94a5da45499faefd8200f4ef2459c6d6ce57b75f25dae16e8e06ec4c79cec244\",\"dweb:/ipfs/QmQ2WX84JvYGGrHssAXmkzf1pS94CMFzWAV3xg94Y7Jzuz\"]},\"src/interfaces/ITicket.sol\":{\"keccak256\":\"0x059eddf30dc48e0dc8ef781a876a58dcab64f0575500609b34357558f54ed3bd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3fefbf93a5354fd928b1d3511c9b2c06db779890446276a28c2d572fb7f5efb5\",\"dweb:/ipfs/QmVzSDrumsdNFF3r1Lt5rJ6nTMeNsTjrDcSABf32uPSGuK\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"ZeroAddress"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","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":"recipient","type":"address","indexed":true}],"type":"event","name":"PaymentRecipientSet","anonymous":false},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":false}],"type":"event","name":"PaymentTokenSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"PromoCreationPriceSet","anonymous":false},{"inputs":[{"internalType":"address","name":"marketer","type":"address","indexed":true},{"internalType":"struct Promotion","name":"promotion","type":"tuple","components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"address","name":"promoAddr","type":"address"},{"internalType":"address[]","name":"streams","type":"address[]"},{"internalType":"string","name":"description","type":"string"}],"indexed":false}],"type":"event","name":"PromotionCreated","anonymous":false},{"inputs":[{"internalType":"struct Promotion","name":"promotion","type":"tuple","components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"address","name":"promoAddr","type":"address"},{"internalType":"address[]","name":"streams","type":"address[]"},{"internalType":"string","name":"description","type":"string"}]},{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createPromo"},{"inputs":[{"internalType":"address","name":"stream","type":"address"}],"stateMutability":"view","type":"function","name":"getAvailablePromotions","outputs":[{"internalType":"struct Promotion[]","name":"","type":"tuple[]","components":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"address","name":"promoAddr","type":"address"},{"internalType":"address[]","name":"streams","type":"address[]"},{"internalType":"string","name":"description","type":"string"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPaymentRecipientAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPaymentTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPromoCreationPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"address","name":"paymentRecipient","type":"address"},{"internalType":"uint256","name":"promoCreationPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPaymentRecipient"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPaymentToken"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPromoCreationPrice"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"createPromo((uint256,uint256,address,address[],string),string)":{"details":"This function calculates the price for creating a promo based on the number of streams specified in the `promotion` struct, multiplied by the `_promoCreationPrice`","params":{"promotion":"A `Promotion` struct containing the details of the promotion","uri":"The URI for the promo metadata"}},"initialize(address,address,uint256)":{"params":{"paymentRecipient":"The address that will receive payments","paymentToken":"The address of the token used for payments","promoCreationPrice":"The price (in paymentToken units) for creating a new promo"}},"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."},"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":{"createPromo((uint256,uint256,address,address[],string),string)":{"notice":"Creates a new promo with specified promotion details and URI"},"initialize(address,address,uint256)":{"notice":"Initializes the PromoFactory contract"}},"version":1}},"settings":{"remappings":["@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/openzeppelin-contracts/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","src/=src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PromoFactory.sol":"PromoFactory"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/ERC721Upgradeable.sol":{"keccak256":"0x48efca78ce4e1a9f74d3ca8539bb53d04b116e507c10cd9e0df6105b8a6ae420","urls":["bzz-raw://1d9f5e03898857a187d99bd0766daf725abe87f454db82ac6286544d8cb4532f","dweb:/ipfs/QmXFNXaNuxvGCLNL9xAFbvEgRmXDuxw4Ukf9tddiAHDq59"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol":{"keccak256":"0x7e68925d3373bd2baa7ac36839c464b2e77b67764201c4e0196d62699ee220b8","urls":["bzz-raw://c0896e7ff605a131ca982da1175d798c19588852dc74329f5c3675ac76cb80ff","dweb:/ipfs/QmdePp3XmXaKz4A9qqj6enFuqERWvJoN4uRmFzu2cwLPX8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC4906.sol":{"keccak256":"0xb31b86c03f4677dcffa4655285d62433509513be9bafa0e04984565052d34e44","urls":["bzz-raw://a89c6fb0cd5fef4244500b633f63def9f2bb2134debb961e590bd5a2910662fd","dweb:/ipfs/QmNqWyCxyopvb99RbRomPpfTZGXRi5MnzgpFXE2BFLLgMc"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol":{"keccak256":"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d","urls":["bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b","dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol":{"keccak256":"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49","urls":["bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22","dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/Promo.sol":{"keccak256":"0x8787b77e48c8f1296fc87a335551d134b9f54ccfa016d3f0031cf5d13c106e88","urls":["bzz-raw://fed90cf381a0cbe821715fcf657e9ddd7924df8d50de7e99e8232491fc2dd04a","dweb:/ipfs/QmTMcjrsV4DPhjWEaJAj2NUjN5EueEED8SPdymya3huuBs"],"license":"MIT"},"src/PromoFactory.sol":{"keccak256":"0x33cd102c03fb2af42a0c91bb4b7d5ab1f6005fade933d2c24f15202f8cd1dde6","urls":["bzz-raw://2a7c888e0634872e2e6cb1d3eed60133cc4e076c73d2bbf850528b5e7d88bf6a","dweb:/ipfs/QmUUPNsD8vuhB6SyHEW6eFXgzW6wcZz38FK7mMkCzDJ9Jt"],"license":"MIT"},"src/interfaces/IPromo.sol":{"keccak256":"0xd726b5236c7dd81889f4a6791bed070c87d823822243a458b2db66251a94cd13","urls":["bzz-raw://94a5da45499faefd8200f4ef2459c6d6ce57b75f25dae16e8e06ec4c79cec244","dweb:/ipfs/QmQ2WX84JvYGGrHssAXmkzf1pS94CMFzWAV3xg94Y7Jzuz"],"license":"MIT"},"src/interfaces/ITicket.sol":{"keccak256":"0x059eddf30dc48e0dc8ef781a876a58dcab64f0575500609b34357558f54ed3bd","urls":["bzz-raw://3fefbf93a5354fd928b1d3511c9b2c06db779890446276a28c2d572fb7f5efb5","dweb:/ipfs/QmVzSDrumsdNFF3r1Lt5rJ6nTMeNsTjrDcSABf32uPSGuK"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"src/PromoFactory.sol","id":52793,"exportedSymbols":{"IERC20":[48848],"IPromo":[54115],"Initializable":[45750],"OwnableUpgradeable":[45496],"PromoFactory":[52792],"Promotion":[52128],"SafeERC20":[49200]},"nodeType":"SourceUnit","src":"32:4347:68","nodes":[{"id":52514,"nodeType":"PragmaDirective","src":"32:23:68","nodes":[],"literals":["solidity","0.8",".20"]},{"id":52517,"nodeType":"ImportDirective","src":"57:90:68","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":52793,"sourceUnit":49201,"symbolAliases":[{"foreign":{"id":52515,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":49200,"src":"65:9:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":52516,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48848,"src":"76:6:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52519,"nodeType":"ImportDirective","src":"148:96:68","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin-upgradeable/contracts/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":52793,"sourceUnit":45751,"symbolAliases":[{"foreign":{"id":52518,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45750,"src":"156:13:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52521,"nodeType":"ImportDirective","src":"245:101:68","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin-upgradeable/contracts/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":52793,"sourceUnit":45497,"symbolAliases":[{"foreign":{"id":52520,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45496,"src":"253:18:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52523,"nodeType":"ImportDirective","src":"348:49:68","nodes":[],"absolutePath":"src/interfaces/IPromo.sol","file":"src/interfaces/IPromo.sol","nameLocation":"-1:-1:-1","scope":52793,"sourceUnit":54116,"symbolAliases":[{"foreign":{"id":52522,"name":"IPromo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54115,"src":"356:6:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52525,"nodeType":"ImportDirective","src":"398:40:68","nodes":[],"absolutePath":"src/Promo.sol","file":"src/Promo.sol","nameLocation":"-1:-1:-1","scope":52793,"sourceUnit":52513,"symbolAliases":[{"foreign":{"id":52524,"name":"Promotion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52128,"src":"406:9:68","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52792,"nodeType":"ContractDefinition","src":"759:3619:68","nodes":[{"id":52534,"nodeType":"UsingForDirective","src":"824:27:68","nodes":[],"global":false,"libraryName":{"id":52531,"name":"SafeERC20","nameLocations":["830:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":49200,"src":"830:9:68"},"typeName":{"id":52533,"nodeType":"UserDefinedTypeName","pathNode":{"id":52532,"name":"IERC20","nameLocations":["844:6:68"],"nodeType":"IdentifierPath","referencedDeclaration":48848,"src":"844:6:68"},"referencedDeclaration":48848,"src":"844:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$48848","typeString":"contract IERC20"}}},{"id":52537,"nodeType":"VariableDeclaration","src":"857:28:68","nodes":[],"constant":false,"mutability":"mutable","name":"_paymentToken","nameLocation":"872:13:68","scope":52792,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$48848","typeString":"contract IERC20"},"typeName":{"id":52536,"nodeType":"UserDefinedTypeName","pathNode":{"id":52535,"name":"IERC20","nameLocations":["857:6:68"],"nodeType":"IdentifierPath","referencedDeclaration":48848,"src":"857:6:68"},"referencedDeclaration":48848,"src":"857:6:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$48848","typeString":"contract IERC20"}},"visibility":"private"},{"id":52539,"nodeType":"VariableDeclaration","src":"891:33:68","nodes":[],"constant":false,"mutability":"mutable","name":"_paymentRecipient","nameLocation":"907:17:68","scope":52792,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52538,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":52541,"nodeType":"VariableDeclaration","src":"930:35:68","nodes":[],"constant":false,"mutability":"mutable","name":"_promoCreationPrice","nameLocation":"946:19:68","scope":52792,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52540,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":52547,"nodeType":"VariableDeclaration","src":"972:71:68","nodes":[],"constant":false,"mutability":"mutable","name":"_promoRegistry","nameLocation":"1029:14:68","scope":52792,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage_$","typeString":"mapping(address => struct Promotion[])"},"typeName":{"id":52546,"keyName":"stream","keyNameLocation":"988:6:68","keyType":{"id":52542,"name":"address","nodeType":"ElementaryTypeName","src":"980:7:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"972:48:68","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage_$","typeString":"mapping(address => struct Promotion[])"},"valueName":"promotion","valueNameLocation":"1010:9:68","valueType":{"baseType":{"id":52544,"nodeType":"UserDefinedTypeName","pathNode":{"id":52543,"name":"Promotion","nameLocations":["998:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":52128,"src":"998:9:68"},"referencedDeclaration":52128,"src":"998:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_storage_ptr","typeString":"struct Promotion"}},"id":52545,"nodeType":"ArrayTypeName","src":"998:11:68","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage_ptr","typeString":"struct Promotion[]"}}},"visibility":"private"},{"id":52552,"nodeType":"EventDefinition","src":"1066:53:68","nodes":[],"anonymous":false,"documentation":{"id":52548,"nodeType":"StructuredDocumentation","src":"1050:11:68","text":"Events"},"eventSelector":"2921f72f5586ae66340225bd63c5e912305341e197c425ed60c008192ea4d47a","name":"PaymentRecipientSet","nameLocation":"1072:19:68","parameters":{"id":52551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52550,"indexed":true,"mutability":"mutable","name":"recipient","nameLocation":"1108:9:68","nodeType":"VariableDeclaration","scope":52552,"src":"1092:25:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52549,"name":"address","nodeType":"ElementaryTypeName","src":"1092:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1091:27:68"}},{"id":52556,"nodeType":"EventDefinition","src":"1124:37:68","nodes":[],"anonymous":false,"eventSelector":"cb0aeffe884eb88fb2a31a2f3e4bd1d2763bdee48ba93b28c6e87501228cf743","name":"PaymentTokenSet","nameLocation":"1130:15:68","parameters":{"id":52555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52554,"indexed":false,"mutability":"mutable","name":"token","nameLocation":"1154:5:68","nodeType":"VariableDeclaration","scope":52556,"src":"1146:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52553,"name":"address","nodeType":"ElementaryTypeName","src":"1146:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1145:15:68"}},{"id":52563,"nodeType":"EventDefinition","src":"1166:70:68","nodes":[],"anonymous":false,"eventSelector":"d9b42bb096f4c62dfc76023d46bac952fbc443c1f23189362ce518e507e5d5ab","name":"PromotionCreated","nameLocation":"1172:16:68","parameters":{"id":52562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52558,"indexed":true,"mutability":"mutable","name":"marketer","nameLocation":"1205:8:68","nodeType":"VariableDeclaration","scope":52563,"src":"1189:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52557,"name":"address","nodeType":"ElementaryTypeName","src":"1189:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52561,"indexed":false,"mutability":"mutable","name":"promotion","nameLocation":"1225:9:68","nodeType":"VariableDeclaration","scope":52563,"src":"1215:19:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_memory_ptr","typeString":"struct Promotion"},"typeName":{"id":52560,"nodeType":"UserDefinedTypeName","pathNode":{"id":52559,"name":"Promotion","nameLocations":["1215:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":52128,"src":"1215:9:68"},"referencedDeclaration":52128,"src":"1215:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_storage_ptr","typeString":"struct Promotion"}},"visibility":"internal"}],"src":"1188:47:68"}},{"id":52567,"nodeType":"EventDefinition","src":"1241:43:68","nodes":[],"anonymous":false,"eventSelector":"fa7987995fa0b05b25b994a66186f61818446c5c17fbb863f0145178fd4b373e","name":"PromoCreationPriceSet","nameLocation":"1247:21:68","parameters":{"id":52566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52565,"indexed":false,"mutability":"mutable","name":"price","nameLocation":"1277:5:68","nodeType":"VariableDeclaration","scope":52567,"src":"1269:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52564,"name":"uint256","nodeType":"ElementaryTypeName","src":"1269:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1268:15:68"}},{"id":52570,"nodeType":"ErrorDefinition","src":"1306:20:68","nodes":[],"documentation":{"id":52568,"nodeType":"StructuredDocumentation","src":"1290:11:68","text":"Errors"},"errorSelector":"d92e233d","name":"ZeroAddress","nameLocation":"1312:11:68","parameters":{"id":52569,"nodeType":"ParameterList","parameters":[],"src":"1323:2:68"}},{"id":52588,"nodeType":"ModifierDefinition","src":"1411:137:68","nodes":[],"body":{"id":52587,"nodeType":"Block","src":"1449:99:68","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":52580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52575,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52573,"src":"1463:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":52578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1481:1:68","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":52577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1473:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52576,"name":"address","nodeType":"ElementaryTypeName","src":"1473:7:68","typeDescriptions":{}}},"id":52579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1473:10:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1463:20:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52585,"nodeType":"IfStatement","src":"1459:71:68","trueBody":{"id":52584,"nodeType":"Block","src":"1485:45:68","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":52581,"name":"ZeroAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52570,"src":"1506:11:68","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":52582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1506:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52583,"nodeType":"RevertStatement","src":"1499:20:68"}]}},{"id":52586,"nodeType":"PlaceholderStatement","src":"1540:1:68"}]},"documentation":{"id":52571,"nodeType":"StructuredDocumentation","src":"1351:55:68","text":"@notice Checks that the address is not zero address"},"name":"checkAddress","nameLocation":"1420:12:68","parameters":{"id":52574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52573,"mutability":"mutable","name":"target","nameLocation":"1441:6:68","nodeType":"VariableDeclaration","scope":52588,"src":"1433:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52572,"name":"address","nodeType":"ElementaryTypeName","src":"1433:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1432:16:68"},"virtual":false,"visibility":"internal"},{"id":52595,"nodeType":"FunctionDefinition","src":"1554:53:68","nodes":[],"body":{"id":52594,"nodeType":"Block","src":"1568:39:68","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":52591,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45718,"src":"1578:20:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":52592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1578:22:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52593,"nodeType":"ExpressionStatement","src":"1578:22:68"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":52589,"nodeType":"ParameterList","parameters":[],"src":"1565:2:68"},"returnParameters":{"id":52590,"nodeType":"ParameterList","parameters":[],"src":"1568:0:68"},"scope":52792,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52625,"nodeType":"FunctionDefinition","src":"1942:318:68","nodes":[],"body":{"id":52624,"nodeType":"Block","src":"2079:181:68","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":52608,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2104:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2108:6:68","memberName":"sender","nodeType":"MemberAccess","src":"2104:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52607,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45356,"src":"2089:14:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":52610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2089:26:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52611,"nodeType":"ExpressionStatement","src":"2089:26:68"},{"expression":{"arguments":[{"id":52613,"name":"paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52598,"src":"2142:12:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52612,"name":"setPaymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52731,"src":"2126:15:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":52614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2126:29:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52615,"nodeType":"ExpressionStatement","src":"2126:29:68"},{"expression":{"arguments":[{"id":52617,"name":"paymentRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52600,"src":"2185:16:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52616,"name":"setPaymentRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52750,"src":"2165:19:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":52618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2165:37:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52619,"nodeType":"ExpressionStatement","src":"2165:37:68"},{"expression":{"arguments":[{"id":52621,"name":"promoCreationPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52602,"src":"2234:18:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52620,"name":"setPromoCreationPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52710,"src":"2212:21:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":52622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2212:41:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52623,"nodeType":"ExpressionStatement","src":"2212:41:68"}]},"documentation":{"id":52596,"nodeType":"StructuredDocumentation","src":"1641:296:68","text":" @notice Initializes the PromoFactory contract\n @param paymentToken The address of the token used for payments\n @param paymentRecipient The address that will receive payments\n @param promoCreationPrice The price (in paymentToken units) for creating a new promo"},"functionSelector":"1794bb3c","implemented":true,"kind":"function","modifiers":[{"id":52605,"kind":"modifierInvocation","modifierName":{"id":52604,"name":"initializer","nameLocations":["2063:11:68"],"nodeType":"IdentifierPath","referencedDeclaration":45604,"src":"2063:11:68"},"nodeType":"ModifierInvocation","src":"2063:11:68"}],"name":"initialize","nameLocation":"1951:10:68","parameters":{"id":52603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52598,"mutability":"mutable","name":"paymentToken","nameLocation":"1970:12:68","nodeType":"VariableDeclaration","scope":52625,"src":"1962:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52597,"name":"address","nodeType":"ElementaryTypeName","src":"1962:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52600,"mutability":"mutable","name":"paymentRecipient","nameLocation":"1992:16:68","nodeType":"VariableDeclaration","scope":52625,"src":"1984:24:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52599,"name":"address","nodeType":"ElementaryTypeName","src":"1984:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52602,"mutability":"mutable","name":"promoCreationPrice","nameLocation":"2018:18:68","nodeType":"VariableDeclaration","scope":52625,"src":"2010:26:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52601,"name":"uint256","nodeType":"ElementaryTypeName","src":"2010:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1961:76:68"},"returnParameters":{"id":52606,"nodeType":"ParameterList","parameters":[],"src":"2079:0:68"},"scope":52792,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":52694,"nodeType":"FunctionDefinition","src":"2730:539:68","nodes":[],"body":{"id":52693,"nodeType":"Block","src":"2811:458:68","nodes":[],"statements":[{"assignments":[52635],"declarations":[{"constant":false,"id":52635,"mutability":"mutable","name":"streamAmount","nameLocation":"2829:12:68","nodeType":"VariableDeclaration","scope":52693,"src":"2821:20:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52634,"name":"uint256","nodeType":"ElementaryTypeName","src":"2821:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":52639,"initialValue":{"expression":{"expression":{"id":52636,"name":"promotion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52629,"src":"2844:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion calldata"}},"id":52637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2854:7:68","memberName":"streams","nodeType":"MemberAccess","referencedDeclaration":52125,"src":"2844:17:68","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":52638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2862:6:68","memberName":"length","nodeType":"MemberAccess","src":"2844:24:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2821:47:68"},{"assignments":[52641],"declarations":[{"constant":false,"id":52641,"mutability":"mutable","name":"price","nameLocation":"2886:5:68","nodeType":"VariableDeclaration","scope":52693,"src":"2878:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52640,"name":"uint256","nodeType":"ElementaryTypeName","src":"2878:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":52645,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52642,"name":"_promoCreationPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52541,"src":"2894:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":52643,"name":"streamAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52635,"src":"2916:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2894:34:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2878:50:68"},{"expression":{"arguments":[{"expression":{"id":52649,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2970:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2974:6:68","memberName":"sender","nodeType":"MemberAccess","src":"2970:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52651,"name":"_paymentRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52539,"src":"2982:17:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52652,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52641,"src":"3001:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52646,"name":"_paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52537,"src":"2939:13:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$48848","typeString":"contract IERC20"}},"id":52648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2953:16:68","memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":48987,"src":"2939:30:68","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$48848_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$48848_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":52653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2939:68:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52654,"nodeType":"ExpressionStatement","src":"2939:68:68"},{"expression":{"arguments":[{"expression":{"id":52660,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3054:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3058:6:68","memberName":"sender","nodeType":"MemberAccess","src":"3054:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52662,"name":"uri","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52631,"src":"3066:3:68","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":52663,"name":"promotion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52629,"src":"3071:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion calldata"}],"expression":{"arguments":[{"expression":{"id":52656,"name":"promotion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52629,"src":"3024:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion calldata"}},"id":52657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3034:9:68","memberName":"promoAddr","nodeType":"MemberAccess","referencedDeclaration":52122,"src":"3024:19:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52655,"name":"IPromo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54115,"src":"3017:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPromo_$54115_$","typeString":"type(contract IPromo)"}},"id":52658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3017:27:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPromo_$54115","typeString":"contract IPromo"}},"id":52659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3045:8:68","memberName":"safeMint","nodeType":"MemberAccess","referencedDeclaration":54114,"src":"3017:36:68","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$_t_struct$_Promotion_$52128_memory_ptr_$returns$__$","typeString":"function (address,string memory,struct Promotion memory) external"}},"id":52664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3017:64:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52665,"nodeType":"ExpressionStatement","src":"3017:64:68"},{"body":{"id":52685,"nodeType":"Block","src":"3131:77:68","statements":[{"expression":{"arguments":[{"id":52682,"name":"promotion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52629,"src":"3187:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion calldata"}],"expression":{"baseExpression":{"id":52675,"name":"_promoRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52547,"src":"3145:14:68","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage_$","typeString":"mapping(address => struct Promotion storage ref[] storage ref)"}},"id":52680,"indexExpression":{"baseExpression":{"expression":{"id":52676,"name":"promotion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52629,"src":"3160:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion calldata"}},"id":52677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3170:7:68","memberName":"streams","nodeType":"MemberAccess","referencedDeclaration":52125,"src":"3160:17:68","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":52679,"indexExpression":{"id":52678,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52667,"src":"3178:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3160:20:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3145:36:68","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage","typeString":"struct Promotion storage ref[] storage ref"}},"id":52681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3182:4:68","memberName":"push","nodeType":"MemberAccess","src":"3145:41:68","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage_ptr_$_t_struct$_Promotion_$52128_storage_$returns$__$attached_to$_t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage_ptr_$","typeString":"function (struct Promotion storage ref[] storage pointer,struct Promotion storage ref)"}},"id":52683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3145:52:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52684,"nodeType":"ExpressionStatement","src":"3145:52:68"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52669,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52667,"src":"3108:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":52670,"name":"streamAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52635,"src":"3112:12:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3108:16:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52686,"initializationExpression":{"assignments":[52667],"declarations":[{"constant":false,"id":52667,"mutability":"mutable","name":"i","nameLocation":"3105:1:68","nodeType":"VariableDeclaration","scope":52686,"src":"3097:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52666,"name":"uint256","nodeType":"ElementaryTypeName","src":"3097:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":52668,"nodeType":"VariableDeclarationStatement","src":"3097:9:68"},"loopExpression":{"expression":{"id":52673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3126:3:68","subExpression":{"id":52672,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52667,"src":"3126:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52674,"nodeType":"ExpressionStatement","src":"3126:3:68"},"nodeType":"ForStatement","src":"3092:116:68"},{"eventCall":{"arguments":[{"expression":{"id":52688,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3240:3:68","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3244:6:68","memberName":"sender","nodeType":"MemberAccess","src":"3240:10:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52690,"name":"promotion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52629,"src":"3252:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion calldata"}],"id":52687,"name":"PromotionCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52563,"src":"3223:16:68","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_struct$_Promotion_$52128_memory_ptr_$returns$__$","typeString":"function (address,struct Promotion memory)"}},"id":52691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3223:39:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52692,"nodeType":"EmitStatement","src":"3218:44:68"}]},"documentation":{"id":52626,"nodeType":"StructuredDocumentation","src":"2314:411:68","text":" @notice Creates a new promo with specified promotion details and URI\n @param promotion A `Promotion` struct containing the details of the promotion\n @param uri The URI for the promo metadata\n @dev This function calculates the price for creating a promo based\n on the number of streams specified in the `promotion` struct,\n multiplied by the `_promoCreationPrice`"},"functionSelector":"fb6223ac","implemented":true,"kind":"function","modifiers":[],"name":"createPromo","nameLocation":"2739:11:68","parameters":{"id":52632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52629,"mutability":"mutable","name":"promotion","nameLocation":"2770:9:68","nodeType":"VariableDeclaration","scope":52694,"src":"2751:28:68","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_calldata_ptr","typeString":"struct Promotion"},"typeName":{"id":52628,"nodeType":"UserDefinedTypeName","pathNode":{"id":52627,"name":"Promotion","nameLocations":["2751:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":52128,"src":"2751:9:68"},"referencedDeclaration":52128,"src":"2751:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_storage_ptr","typeString":"struct Promotion"}},"visibility":"internal"},{"constant":false,"id":52631,"mutability":"mutable","name":"uri","nameLocation":"2797:3:68","nodeType":"VariableDeclaration","scope":52694,"src":"2781:19:68","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":52630,"name":"string","nodeType":"ElementaryTypeName","src":"2781:6:68","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2750:51:68"},"returnParameters":{"id":52633,"nodeType":"ParameterList","parameters":[],"src":"2811:0:68"},"scope":52792,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":52710,"nodeType":"FunctionDefinition","src":"3318:151:68","nodes":[],"body":{"id":52709,"nodeType":"Block","src":"3381:88:68","nodes":[],"statements":[{"expression":{"id":52703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52701,"name":"_promoCreationPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52541,"src":"3391:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52702,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52696,"src":"3413:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3391:27:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52704,"nodeType":"ExpressionStatement","src":"3391:27:68"},{"eventCall":{"arguments":[{"id":52706,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52696,"src":"3456:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52705,"name":"PromoCreationPriceSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52567,"src":"3434:21:68","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":52707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3434:28:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52708,"nodeType":"EmitStatement","src":"3429:33:68"}]},"functionSelector":"7f753c6f","implemented":true,"kind":"function","modifiers":[{"id":52699,"kind":"modifierInvocation","modifierName":{"id":52698,"name":"onlyOwner","nameLocations":["3371:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":45391,"src":"3371:9:68"},"nodeType":"ModifierInvocation","src":"3371:9:68"}],"name":"setPromoCreationPrice","nameLocation":"3327:21:68","parameters":{"id":52697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52696,"mutability":"mutable","name":"price","nameLocation":"3357:5:68","nodeType":"VariableDeclaration","scope":52710,"src":"3349:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52695,"name":"uint256","nodeType":"ElementaryTypeName","src":"3349:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3348:15:68"},"returnParameters":{"id":52700,"nodeType":"ParameterList","parameters":[],"src":"3381:0:68"},"scope":52792,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52731,"nodeType":"FunctionDefinition","src":"3475:161:68","nodes":[],"body":{"id":52730,"nodeType":"Block","src":"3552:84:68","nodes":[],"statements":[{"expression":{"id":52724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52720,"name":"_paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52537,"src":"3562:13:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$48848","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":52722,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52712,"src":"3585:5:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52721,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48848,"src":"3578:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$48848_$","typeString":"type(contract IERC20)"}},"id":52723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3578:13:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$48848","typeString":"contract IERC20"}},"src":"3562:29:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$48848","typeString":"contract IERC20"}},"id":52725,"nodeType":"ExpressionStatement","src":"3562:29:68"},{"eventCall":{"arguments":[{"id":52727,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52712,"src":"3623:5:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52726,"name":"PaymentTokenSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"3607:15:68","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":52728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3607:22:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52729,"nodeType":"EmitStatement","src":"3602:27:68"}]},"functionSelector":"6a326ab1","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":52715,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52712,"src":"3535:5:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":52716,"kind":"modifierInvocation","modifierName":{"id":52714,"name":"checkAddress","nameLocations":["3522:12:68"],"nodeType":"IdentifierPath","referencedDeclaration":52588,"src":"3522:12:68"},"nodeType":"ModifierInvocation","src":"3522:19:68"},{"id":52718,"kind":"modifierInvocation","modifierName":{"id":52717,"name":"onlyOwner","nameLocations":["3542:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":45391,"src":"3542:9:68"},"nodeType":"ModifierInvocation","src":"3542:9:68"}],"name":"setPaymentToken","nameLocation":"3484:15:68","parameters":{"id":52713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52712,"mutability":"mutable","name":"token","nameLocation":"3508:5:68","nodeType":"VariableDeclaration","scope":52731,"src":"3500:13:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52711,"name":"address","nodeType":"ElementaryTypeName","src":"3500:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3499:15:68"},"returnParameters":{"id":52719,"nodeType":"ParameterList","parameters":[],"src":"3552:0:68"},"scope":52792,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52750,"nodeType":"FunctionDefinition","src":"3642:181:68","nodes":[],"body":{"id":52749,"nodeType":"Block","src":"3731:92:68","nodes":[],"statements":[{"expression":{"id":52743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52741,"name":"_paymentRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52539,"src":"3741:17:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52742,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52733,"src":"3761:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3741:29:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":52744,"nodeType":"ExpressionStatement","src":"3741:29:68"},{"eventCall":{"arguments":[{"id":52746,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52733,"src":"3806:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52745,"name":"PaymentRecipientSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52552,"src":"3786:19:68","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":52747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3786:30:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52748,"nodeType":"EmitStatement","src":"3781:35:68"}]},"functionSelector":"2983c4b8","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":52736,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52733,"src":"3710:9:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":52737,"kind":"modifierInvocation","modifierName":{"id":52735,"name":"checkAddress","nameLocations":["3697:12:68"],"nodeType":"IdentifierPath","referencedDeclaration":52588,"src":"3697:12:68"},"nodeType":"ModifierInvocation","src":"3697:23:68"},{"id":52739,"kind":"modifierInvocation","modifierName":{"id":52738,"name":"onlyOwner","nameLocations":["3721:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":45391,"src":"3721:9:68"},"nodeType":"ModifierInvocation","src":"3721:9:68"}],"name":"setPaymentRecipient","nameLocation":"3651:19:68","parameters":{"id":52734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52733,"mutability":"mutable","name":"recipient","nameLocation":"3679:9:68","nodeType":"VariableDeclaration","scope":52750,"src":"3671:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52732,"name":"address","nodeType":"ElementaryTypeName","src":"3671:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3670:19:68"},"returnParameters":{"id":52740,"nodeType":"ParameterList","parameters":[],"src":"3731:0:68"},"scope":52792,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52764,"nodeType":"FunctionDefinition","src":"3872:137:68","nodes":[],"body":{"id":52763,"nodeType":"Block","src":"3963:46:68","nodes":[],"statements":[{"expression":{"baseExpression":{"id":52759,"name":"_promoRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52547,"src":"3980:14:68","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage_$","typeString":"mapping(address => struct Promotion storage ref[] storage ref)"}},"id":52761,"indexExpression":{"id":52760,"name":"stream","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52752,"src":"3995:6:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3980:22:68","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage","typeString":"struct Promotion storage ref[] storage ref"}},"functionReturnParameters":52758,"id":52762,"nodeType":"Return","src":"3973:29:68"}]},"functionSelector":"0be270fe","implemented":true,"kind":"function","modifiers":[],"name":"getAvailablePromotions","nameLocation":"3881:22:68","parameters":{"id":52753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52752,"mutability":"mutable","name":"stream","nameLocation":"3912:6:68","nodeType":"VariableDeclaration","scope":52764,"src":"3904:14:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52751,"name":"address","nodeType":"ElementaryTypeName","src":"3904:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3903:16:68"},"returnParameters":{"id":52758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52764,"src":"3943:18:68","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Promotion_$52128_memory_ptr_$dyn_memory_ptr","typeString":"struct Promotion[]"},"typeName":{"baseType":{"id":52755,"nodeType":"UserDefinedTypeName","pathNode":{"id":52754,"name":"Promotion","nameLocations":["3943:9:68"],"nodeType":"IdentifierPath","referencedDeclaration":52128,"src":"3943:9:68"},"referencedDeclaration":52128,"src":"3943:9:68","typeDescriptions":{"typeIdentifier":"t_struct$_Promotion_$52128_storage_ptr","typeString":"struct Promotion"}},"id":52756,"nodeType":"ArrayTypeName","src":"3943:11:68","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Promotion_$52128_storage_$dyn_storage_ptr","typeString":"struct Promotion[]"}},"visibility":"internal"}],"src":"3942:20:68"},"scope":52792,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":52772,"nodeType":"FunctionDefinition","src":"4015:108:68","nodes":[],"body":{"id":52771,"nodeType":"Block","src":"4080:43:68","nodes":[],"statements":[{"expression":{"id":52769,"name":"_promoCreationPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52541,"src":"4097:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":52768,"id":52770,"nodeType":"Return","src":"4090:26:68"}]},"functionSelector":"d412e607","implemented":true,"kind":"function","modifiers":[],"name":"getPromoCreationPrice","nameLocation":"4024:21:68","parameters":{"id":52765,"nodeType":"ParameterList","parameters":[],"src":"4045:2:68"},"returnParameters":{"id":52768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52767,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52772,"src":"4071:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52766,"name":"uint256","nodeType":"ElementaryTypeName","src":"4071:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4070:9:68"},"scope":52792,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":52783,"nodeType":"FunctionDefinition","src":"4129:112:68","nodes":[],"body":{"id":52782,"nodeType":"Block","src":"4195:46:68","nodes":[],"statements":[{"expression":{"arguments":[{"id":52779,"name":"_paymentToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52537,"src":"4220:13:68","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$48848","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$48848","typeString":"contract IERC20"}],"id":52778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4212:7:68","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52777,"name":"address","nodeType":"ElementaryTypeName","src":"4212:7:68","typeDescriptions":{}}},"id":52780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4212:22:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":52776,"id":52781,"nodeType":"Return","src":"4205:29:68"}]},"functionSelector":"dea182c1","implemented":true,"kind":"function","modifiers":[],"name":"getPaymentTokenAddress","nameLocation":"4138:22:68","parameters":{"id":52773,"nodeType":"ParameterList","parameters":[],"src":"4160:2:68"},"returnParameters":{"id":52776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52775,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52783,"src":"4186:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52774,"name":"address","nodeType":"ElementaryTypeName","src":"4186:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4185:9:68"},"scope":52792,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":52791,"nodeType":"FunctionDefinition","src":"4247:111:68","nodes":[],"body":{"id":52790,"nodeType":"Block","src":"4317:41:68","nodes":[],"statements":[{"expression":{"id":52788,"name":"_paymentRecipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52539,"src":"4334:17:68","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":52787,"id":52789,"nodeType":"Return","src":"4327:24:68"}]},"functionSelector":"44680c86","implemented":true,"kind":"function","modifiers":[],"name":"getPaymentRecipientAddress","nameLocation":"4256:26:68","parameters":{"id":52784,"nodeType":"ParameterList","parameters":[],"src":"4282:2:68"},"returnParameters":{"id":52787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52786,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52791,"src":"4308:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52785,"name":"address","nodeType":"ElementaryTypeName","src":"4308:7:68","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4307:9:68"},"scope":52792,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":52527,"name":"Initializable","nameLocations":["784:13:68"],"nodeType":"IdentifierPath","referencedDeclaration":45750,"src":"784:13:68"},"id":52528,"nodeType":"InheritanceSpecifier","src":"784:13:68"},{"baseName":{"id":52529,"name":"OwnableUpgradeable","nameLocations":["799:18:68"],"nodeType":"IdentifierPath","referencedDeclaration":45496,"src":"799:18:68"},"id":52530,"nodeType":"InheritanceSpecifier","src":"799:18:68"}],"canonicalName":"PromoFactory","contractDependencies":[],"contractKind":"contract","documentation":{"id":52526,"nodeType":"StructuredDocumentation","src":"440:318:68","text":" @title PromoFactory contract\n @notice A contract that creates promotions using the Promo collection.\n Every promotion is a nft (ERC721).\n The contract is managed by Owner role.\n The owner can set on a smart contract:\n - the price of creating a promotional share\n - payment token\n - payee"},"fullyImplemented":true,"linearizedBaseContracts":[52792,45496,47098,45750],"name":"PromoFactory","nameLocation":"768:12:68","scope":52793,"usedErrors":[45332,45337,45513,45516,48927,49371,49376,49379,52570],"usedEvents":[45343,45521,52552,52556,52563,52567]}],"license":"MIT"},"id":68}