{"matchId":"56773364","creationMatch":"exact_match","runtimeMatch":"exact_match","verifiedAt":"2026-10-23T14:04:02Z","creationBytecode":{"onchainBytecode":"0x60e03461017757601f610ff238819003918201601f19168301916001600160401b0383118484101761017b57808492606094604052833981010312610177576100478161018f565b61005860406020840151930161018f565b803b156101005760808190526001600160a01b0382168015918215610159575b8215610140575b821561012d575b508115610123575b50801561011a575b801561010f575b6101005760a05260c052604051610e4e90816101a4823960805181818160fb01526109f3015260a05181818161021f0152818161046f01528181610563015281816106080152610c51015260c05181818160bf0152818161062a0152610c750152f35b6322d55eab60e01b5f5260045ffd5b5081813f141561009d565b50803b15610096565b905030145f61008e565b6001600160a01b0316811491505f610086565b6e04444c5dc75cb358380d2e3de08a908214925061007f565b73ea0436465676ea7001535bfe2e5cbd4b137b7f9182149250610078565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033000000000000000000000000c990288f1dd970f95005225dc27c111125e96609a35558c6ef0f605a8514d9dde1e18e2e0d03df826cd450e3c691b6709385d9e7000000000000000000000000a25ca2d2521aa47b6cc84b28be66e8fc7a1b768e","recompiledBytecode":"0x60e03461017757601f610ff238819003918201601f19168301916001600160401b0383118484101761017b57808492606094604052833981010312610177576100478161018f565b61005860406020840151930161018f565b803b156101005760808190526001600160a01b0382168015918215610159575b8215610140575b821561012d575b508115610123575b50801561011a575b801561010f575b6101005760a05260c052604051610e4e90816101a4823960805181818160fb01526109f3015260a05181818161021f0152818161046f01528181610563015281816106080152610c51015260c05181818160bf0152818161062a0152610c750152f35b6322d55eab60e01b5f5260045ffd5b5081813f141561009d565b50803b15610096565b905030145f61008e565b6001600160a01b0316811491505f610086565b6e04444c5dc75cb358380d2e3de08a908214925061007f565b73ea0436465676ea7001535bfe2e5cbd4b137b7f9182149250610078565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033","sourceMap":"542:4155:2:-:0;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;1266:19;;:22;1263:50;;1323:15;;;;-1:-1:-1;;;;;542:4155:2;;1351:18;;;:32;;;;-1:-1:-1;1351:49:2;;;;-1:-1:-1;1351:66:2;;;;-1:-1:-1;1351:89:2;;;;;-1:-1:-1;1351:125:2;;;;;-1:-1:-1;1351:152:2;;;;-1:-1:-1;1348:180:2;;1538:14;;1554:24;;542:4155;;;;;;;;1323:15;542:4155;;;;;;;;;;1538:14;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;1554:24;542:4155;;;;;;;;;;;;;;;;1348:180;1297:16;;;-1:-1:-1;1512:16:2;;-1:-1:-1;1512:16:2;1351:152;1478:15;;;;:25;;1351:152;;:125;1455:18;;;:21;1351:125;;:89;1435:4;;;1419:21;1351:89;;;:66;-1:-1:-1;;;;;542:4155:2;1402:15;;;-1:-1:-1;1351:66:2;;;:49;702:42;1385:15;;;-1:-1:-1;1351:49:2;;:32;622:42;1371:12;;;-1:-1:-1;1351:32:2;;542:4155;-1:-1:-1;542:4155:2;;;;;;-1:-1:-1;542:4155:2;;;;;-1:-1:-1;542:4155:2;;;;-1:-1:-1;;;;;542:4155:2;;;;;;:::o","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033","offset":4029}},"transformations":[{"type":"insert","offset":4082,"reason":"constructorArguments"}],"transformationValues":{"constructorArguments":"0x000000000000000000000000c990288f1dd970f95005225dc27c111125e96609a35558c6ef0f605a8514d9dde1e18e2e0d03df826cd450e3c691b6709385d9e7000000000000000000000000a25ca2d2521aa47b6cc84b28be66e8fc7a1b768e"}},"runtimeBytecode":{"onchainBytecode":"0x60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517fa35558c6ef0f605a8514d9dde1e18e2e0d03df826cd450e3c691b6709385d9e78152f35b5f80fd5b346100e2575f3660031901126100e2576040517f000000000000000000000000a25ca2d2521aa47b6cc84b28be66e8fc7a1b768e6001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f000000000000000000000000c990288f1dd970f95005225dc27c111125e966096001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f000000000000000000000000c990288f1dd970f95005225dc27c111125e966096001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000c990288f1dd970f95005225dc27c111125e966091660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f000000000000000000000000c990288f1dd970f95005225dc27c111125e966093f7fa35558c6ef0f605a8514d9dde1e18e2e0d03df826cd450e3c691b6709385d9e714156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000a25ca2d2521aa47b6cc84b28be66e8fc7a1b768e16828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000c990288f1dd970f95005225dc27c111125e9660996873f7fa35558c6ef0f605a8514d9dde1e18e2e0d03df826cd450e3c691b6709385d9e703610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033","recompiledBytecode":"0x60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033","sourceMap":"542:4155:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;975:40;542:4155;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;750:32;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;937:32;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;875:5;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;-1:-1:-1;542:4155:2;;;;;;;;;;;;;;;;:::i;:::-;622:42;4146:10;:16;;;:45;;;542:4155;4146:80;;;;542:4155;4143:108;;4275:5;;:::i;:::-;4310:18;542:4155;4329:20;;;:::i;:::-;542:4155;;;;;;;;;4362:13;;:71;;;542:4155;4359:99;;542:4155;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4557:37;;542:4155;4557:37;542:4155;4557:37;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4310:18;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4566:7;-1:-1:-1;;;;;542:4155:2;;;;4557:37;542:4155;4557:37;542:4155;4557:37;542:4155;4557:37;;;;;;;542:4155;4557:37;;;542:4155;-1:-1:-1;;;;;;;542:4155:2;-1:-1:-1;;;4557:64:2;4554:92;;542:4155;;-1:-1:-1;;;542:4155:2;;;;;4554:92;4235:16;;;542:4155;4630:16;542:4155;;4630:16;4557:37;;;542:4155;4557:37;;542:4155;4557:37;;;;;;542:4155;4557:37;;;:::i;:::-;;;542:4155;;;;;-1:-1:-1;;;;;;542:4155:2;;;;;;4557:37;;;;;;-1:-1:-1;4557:37:2;;;542:4155;;;;;;;;;;;;;;;;;;;;;4362:71;542:4155;;;;;;4378:55;;542:4155;;;;;4412:7;542:4155;;4378:55;;542:4155;;;;;;;;;;;;4378:55;;;542:4155;702:42;4378:55;;;;;;;542:4155;4378:55;;;4362:71;4377:56;;4362:71;;4378:55;;;;542:4155;4378:55;542:4155;4378:55;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;542:4155;;;;;;;;;;;;4146:80;4193:7;;:16;4211:15;4193:33;;4146:80;;:45;-1:-1:-1;4164:12:2;542:4155;-1:-1:-1;;;;;542:4155:2;;;;;;;;4186:4;;4164:27;;4146:45;;542:4155;;;;;;-1:-1:-1;;542:4155:2;;;;;;;924:7;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;622:42;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;826:6;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;702:42;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;2759:574::-;2867:9;542:4155;;;;;;;;;;;;;;2867:26;;;2759:574;2866:59;;;;2759:574;2863:87;;;542:4155;;3133:85;;;3159:13;542:4155;;;;;;;;;;-1:-1:-1;;;;542:4155:2;;;;3143:44;542:4155;3175:12;542:4155;;-1:-1:-1;542:4155:2;3143:44;:::i;:::-;875:5;542:4155;;;;;;875:5;542:4155;;;;;;;3254:9;542:4155;;;3283:18;542:4155;3276:25;;3273:53;;2759:574::o;3133:85::-;3203:13;542:4155;;;;;;;;;;3133:85;;;2866:59;2898:9;;;-1:-1:-1;542:4155:2;2897:27;;;2866:59;;;;2897:27;2909:13;;542:4155;;;;;;;;;-1:-1:-1;542:4155:2;2909:15;;2897:27;;2867:26;2878:13;;;542:4155;;;;;;;;;2892:1;542:4155;2878:15;;2867:26;;;542:4155;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;542:4155:2;;;;;;;;-1:-1:-1;;542:4155:2;;;;:::o;3496:535::-;3574:12;542:4155;-1:-1:-1;;;;;542:4155:2;;;;;;;3596:4;3574:27;;3571:55;;622:42;3639:10;:16;;:84;;;;3496:535;3636:112;;;;542:4155;;;-1:-1:-1;542:4155:2;-1:-1:-1;3574:12:2;542:4155;;;-1:-1:-1;542:4155:2;;;3758:36;;542:4155;2867:9;;;;:::i;:::-;:26;;;3496:535;2866:59;;;;3496:535;2863:87;;3133:9;;;:::i;:::-;:85;;;3159:13;;;;;:::i;:::-;542:4155;;-1:-1:-1;;;542:4155:2;;;;3143:44;3175:12;;;;542:4155;;-1:-1:-1;542:4155:2;3143:44;:::i;:::-;875:5;542:4155;;;;;;875:5;542:4155;;;;;;;3254:9;542:4155;;3283:18;;;;542:4155;3276:25;;3273:53;;542:4155;-1:-1:-1;542:4155:2;-1:-1:-1;3574:12:2;542:4155;;-1:-1:-1;542:4155:2;;;;;;;;;;3890:9;;;:63;;;3133:85;3887:91;;542:4155;3574:12;3993:31;542:4155;;;;;;3993:31;3496:535::o;3887:91::-;-1:-1:-1;;;;3962:16:2;;;;3890:63;542:4155;;;;;;3902:51;;542:4155;;;;;3936:7;542:4155;3902:51;;;542:4155;-1:-1:-1;3574:12:2;542:4155;;;;;;;;3574:12;3902:51;;;-1:-1:-1;702:42:2;3902:51;;;;;;;-1:-1:-1;3902:51:2;;;3890:63;3901:52;;3890:63;;3902:51;;;;3574:12;3902:51;3574:12;3902:51;;;;;;;:::i;:::-;;;;542:4155;;;;;;-1:-1:-1;542:4155:2;;;-1:-1:-1;542:4155:2;3133:85;3203:13;;;;;:::i;:::-;542:4155;;3133:85;;2863:87;-1:-1:-1;;;;;2934:16:2;;;;2866:59;2898:9;;;;:::i;:::-;2897:10;:27;;2866:59;2897:27;2909:13;-1:-1:-1;2909:13:2;;;;;:::i;:::-;542:4155;;2909:15;2866:59;;2867:26;2878:13;-1:-1:-1;2878:13:2;;;;;:::i;:::-;542:4155;;2878:15;2867:26;;3758:36;3787:7;:::o;3639:84::-;542:4155;;-1:-1:-1;;;3657:36:2;;542:4155;;;3657:36;;;542:4155;;;;;-1:-1:-1;542:4155:2;3574:12;542:4155;3574:12;542:4155;622:42;3657:36;;;;;;;-1:-1:-1;3657:36:2;;;3639:84;542:4155;;;3705:17;3574:12;3705:17;;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:17;;;;;;:::i;:::-;542:4155;3695:28;;3657:66;;3639:84;;;;3657:36;;;;3574:12;3657:36;;3574:12;3657:36;;;;;;3574:12;3657:36;;;:::i;:::-;;;542:4155;;;;;3657:36;;;;;;;-1:-1:-1;3657:36:2;;542:4155;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1731:1023;;;;;;542:4155;;;;;;;;:::i;:::-;;;;;1914:7;;:16;;;1932:15;1914:33;1911:55;;542:4155;;;;1995:80;542:4155;-1:-1:-1;;;;;542:4155:2;;;;;;;;1995:80;;;;;;;;;;;;542:4155;;;;;;1995:80;;;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1995:80;542:4155;;1995:80;;;;;;:::i;:::-;2126:158;;;;;;;;2296:3;2293:25;;826:6;542:4155;;826:6;542:4155;2407:3;542:4155;2407:3;;;;542:4155;875:5;542:4155;;;;;;;924:7;-1:-1:-1;2513:52:2;;542:4155;;;;;;875:5;542:4155;;;;;;;;1731:1023::o;2513:52::-;2555:10;;;;:::i;:::-;2548:17;:::o;2411:3::-;2433:4;924:7;2433:4;;;;:::i;:::-;542:4155;2433:18;2430:40;;2484:9;542:4155;2489:4;;;;;:::i;:::-;542:4155;2484:9;;:::i;:::-;2411:3;542:4155;2395:11;;2430:40;2460:10;;;;;;:::i;1911:55::-;1956:10;;;;;;;;;;;;1590:136;542:4155;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;826:6;542:4155;;1682:5;1667:52;;;542:4155;1688:5;542:4155;1667:52;;542:4155;1694:5;1667:52;;;542:4155;1700:5;1667:52;;;542:4155;875:5;1667:52;;;542:4155;1590:136;:::o","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033","offset":3609}},"immutableReferences":{"706":[{"start":251,"length":32},{"start":2547,"length":32}],"717":[{"start":543,"length":32},{"start":1135,"length":32},{"start":1379,"length":32},{"start":1544,"length":32},{"start":3153,"length":32}],"719":[{"start":191,"length":32},{"start":1578,"length":32},{"start":3189,"length":32}]},"transformations":[{"id":"719","type":"replace","offset":191,"reason":"immutable"},{"id":"706","type":"replace","offset":251,"reason":"immutable"},{"id":"717","type":"replace","offset":543,"reason":"immutable"},{"id":"717","type":"replace","offset":1135,"reason":"immutable"},{"id":"717","type":"replace","offset":1379,"reason":"immutable"},{"id":"717","type":"replace","offset":1544,"reason":"immutable"},{"id":"719","type":"replace","offset":1578,"reason":"immutable"},{"id":"706","type":"replace","offset":2547,"reason":"immutable"},{"id":"717","type":"replace","offset":3153,"reason":"immutable"},{"id":"719","type":"replace","offset":3189,"reason":"immutable"}],"transformationValues":{"immutables":{"706":"0x000000000000000000000000a25ca2d2521aa47b6cc84b28be66e8fc7a1b768e","717":"0x000000000000000000000000c990288f1dd970f95005225dc27c111125e96609","719":"0xa35558c6ef0f605a8514d9dde1e18e2e0d03df826cd450e3c691b6709385d9e7"}}},"deployment":{"transactionHash":"0xe71ab59a62934dce98ea3a68babbe897f44e13bf0445186a8987511251a0e619","blockNumber":"26253774","transactionIndex":"268","deployer":"0xAB716305E5A8854c0DD08397087dbDD56eA32073"},"sources":{"src/IClausTradeProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nlibrary ProgramTypes {\n    struct Trade {\n        uint256 id; address module; address sender; bool buy;\n        int128 amount0; int128 amount1; uint256 feeEth;\n        uint256 moduleFeeEth; uint256 blockNumber; uint256 timestamp; bytes32 dataHash;\n    }\n}\ninterface IProgram {\n    function quote(address, bool, int256, uint160, uint128, bytes calldata)\n        external view returns (uint256[6] memory);\n    function onTrade(ProgramTypes.Trade calldata, bytes calldata) external returns (bytes4);\n}\n"},"src/ComputeProtectedProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\ninterface IProgramManager { function transfer(address to,uint256 id,uint256 amount) external returns(bool); }\nimport {IProgram, ProgramTypes} from \"./IClausTradeProgram.sol\";\ninterface IReceiptHost { function pending(uint256) external view returns(bytes32); }\n\n/// @notice Fixed allocation boundary for Claus' reviewed program lane.\n/// @dev Installed only through the fixed governance factory. The personal\n/// fee recipient and its 1.2% allocation remain outside program authority.\ncontract ComputeProtectedProgram is IProgram {\n    address public constant HOST=0xea0436465676eA7001535Bfe2E5cbd4b137b7f91;\n    address public constant MANAGER=0x000000000004444c5dc75cB358380D2e3dE08A90;\n    address public immutable COMPUTE;\n    uint256 public constant TREASURY_PIPS=12_000;\n    uint256 public constant COMPUTE_PIPS=1_000;\n    uint256 public constant MAX_PLAN_PIPS=149_000;\n    address public immutable program;\n    bytes32 public immutable programCodeHash;\n    mapping(uint256=>bool) public computeSettled;\n    error InvalidProgram(); error InvalidReceipt();\n    event ComputeSettled(uint256 indexed receiptId,uint256 amount);\n\n    constructor(address target,bytes32 codeHash,address compute) {\n        if(compute.code.length==0) revert InvalidProgram();\n        COMPUTE=compute;\n        if(target==address(0)||target==HOST||target==MANAGER||target==compute||target==address(this)\n            ||target.code.length==0||target.codehash!=codeHash) revert InvalidProgram();\n        program=target; programCodeHash=codeHash;\n    }\n    function defaults() private pure returns(uint256[6] memory) {\n        return [TREASURY_PIPS,3_000,1_500,2_000,3_500,COMPUTE_PIPS];\n    }\n    function quote(address sender,bool buy,int256 amountSpecified,uint160 price,uint128 liquidity,bytes calldata data)\n        external view returns(uint256[6] memory a)\n    {\n        if(program.codehash!=programCodeHash) return defaults();\n        bytes memory input=abi.encodeCall(IProgram.quote,(sender,buy,amountSpecified,price,liquidity,data));\n        address target=program; bool ok;\n        assembly(\"memory-safe\") {\n            ok:=staticcall(50000,target,add(input,32),mload(input),a,192)\n            ok:=and(ok,eq(returndatasize(),192))\n        }\n        if(!ok) return defaults();\n        a[0]=TREASURY_PIPS;\n        uint256 sum=TREASURY_PIPS;\n        for(uint256 i=1;i<6;i++) {\n            if(a[i]>MAX_PLAN_PIPS) return defaults();\n            sum+=a[i];\n        }\n        if(sum+COMPUTE_PIPS>MAX_PLAN_PIPS) return defaults();\n        // Compute replaces one tenth of a percentage point of the old owner\n        // share. An inner program's own allocation remains available to it.\n        a[5]+=COMPUTE_PIPS;\n    }\n    function computeAmount(ProgramTypes.Trade calldata trade) public pure returns(uint256 amount) {\n        if((trade.buy&&trade.amount0>0)||(!trade.buy&&trade.amount0<0)) revert InvalidReceipt();\n        // The core records pool deltas before hook fees: buy gross is the ETH\n        // spent by the pool plus the fee, sell gross is the pool's ETH output.\n        uint256 gross=trade.buy?uint256(-int256(trade.amount0))+trade.feeEth:uint256(int256(trade.amount0));\n        amount=gross*COMPUTE_PIPS/1_000_000;\n        if(amount>trade.moduleFeeEth) revert InvalidReceipt();\n    }\n    /// @notice Settle compute even when the inner program cannot execute.\n    /// Anyone may submit an original pending receipt, once, to a fixed collector.\n    function settleCompute(ProgramTypes.Trade calldata trade) public {\n        if(trade.module!=address(this)) revert InvalidReceipt();\n        if(msg.sender!=HOST&&IReceiptHost(HOST).pending(trade.id)!=keccak256(abi.encode(trade))) revert InvalidReceipt();\n        if(computeSettled[trade.id]) return;\n        uint256 amount=computeAmount(trade);\n        computeSettled[trade.id]=true;\n        if(amount!=0&&!IProgramManager(MANAGER).transfer(COMPUTE,0,amount)) revert InvalidReceipt();\n        emit ComputeSettled(trade.id,amount);\n    }\n    function onTrade(ProgramTypes.Trade calldata trade,bytes calldata data) external returns(bytes4) {\n        if(msg.sender!=HOST||trade.module!=address(this)||program.codehash!=programCodeHash) revert InvalidReceipt();\n        settleCompute(trade);\n        uint256 programFee=trade.moduleFeeEth-computeAmount(trade);\n        if(programFee!=0&&!IProgramManager(MANAGER).transfer(program,0,programFee)) revert InvalidReceipt();\n        ProgramTypes.Trade memory inner=trade;\n        inner.moduleFeeEth=programFee;\n        if(IProgram(program).onTrade(inner,data)!=IProgram.onTrade.selector) revert InvalidReceipt();\n        return IProgram.onTrade.selector;\n    }\n}\n"}},"compilation":{"language":"Solidity","compiler":"solc","compilerVersion":"0.8.26+commit.8a97fa7a","compilerSettings":{"viaIR":true,"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"runs":200,"enabled":true},"evmVersion":"cancun"},"name":"ComputeProtectedProgram","fullyQualifiedName":"src/ComputeProtectedProgram.sol:ComputeProtectedProgram"},"abi":[{"type":"constructor","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"codeHash","type":"bytes32","internalType":"bytes32"},{"name":"compute","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"InvalidProgram","type":"error","inputs":[]},{"name":"InvalidReceipt","type":"error","inputs":[]},{"name":"ComputeSettled","type":"event","inputs":[{"name":"receiptId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"COMPUTE","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"COMPUTE_PIPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"HOST","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"MANAGER","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"MAX_PLAN_PIPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"TREASURY_PIPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"computeAmount","type":"function","inputs":[{"name":"trade","type":"tuple","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"module","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"amount0","type":"int128","internalType":"int128"},{"name":"amount1","type":"int128","internalType":"int128"},{"name":"feeEth","type":"uint256","internalType":"uint256"},{"name":"moduleFeeEth","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"dataHash","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ProgramTypes.Trade"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"computeSettled","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"onTrade","type":"function","inputs":[{"name":"trade","type":"tuple","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"module","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"amount0","type":"int128","internalType":"int128"},{"name":"amount1","type":"int128","internalType":"int128"},{"name":"feeEth","type":"uint256","internalType":"uint256"},{"name":"moduleFeeEth","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"dataHash","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ProgramTypes.Trade"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"name":"program","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"programCodeHash","type":"function","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"quote","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"price","type":"uint160","internalType":"uint160"},{"name":"liquidity","type":"uint128","internalType":"uint128"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"a","type":"uint256[6]","internalType":"uint256[6]"}],"stateMutability":"view"},{"name":"settleCompute","type":"function","inputs":[{"name":"trade","type":"tuple","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"module","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"amount0","type":"int128","internalType":"int128"},{"name":"amount1","type":"int128","internalType":"int128"},{"name":"feeEth","type":"uint256","internalType":"uint256"},{"name":"moduleFeeEth","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"dataHash","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ProgramTypes.Trade"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes32","name":"codeHash","type":"bytes32"},{"internalType":"address","name":"compute","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidProgram","type":"error"},{"inputs":[],"name":"InvalidReceipt","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"receiptId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ComputeSettled","type":"event"},{"inputs":[],"name":"COMPUTE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"COMPUTE_PIPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HOST","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MANAGER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PLAN_PIPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY_PIPS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"module","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"int128","name":"amount0","type":"int128"},{"internalType":"int128","name":"amount1","type":"int128"},{"internalType":"uint256","name":"feeEth","type":"uint256"},{"internalType":"uint256","name":"moduleFeeEth","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes32","name":"dataHash","type":"bytes32"}],"internalType":"struct ProgramTypes.Trade","name":"trade","type":"tuple"}],"name":"computeAmount","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"computeSettled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"module","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"int128","name":"amount0","type":"int128"},{"internalType":"int128","name":"amount1","type":"int128"},{"internalType":"uint256","name":"feeEth","type":"uint256"},{"internalType":"uint256","name":"moduleFeeEth","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes32","name":"dataHash","type":"bytes32"}],"internalType":"struct ProgramTypes.Trade","name":"trade","type":"tuple"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onTrade","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"program","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"programCodeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"price","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"quote","outputs":[{"internalType":"uint256[6]","name":"a","type":"uint256[6]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"module","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"int128","name":"amount0","type":"int128"},{"internalType":"int128","name":"amount1","type":"int128"},{"internalType":"uint256","name":"feeEth","type":"uint256"},{"internalType":"uint256","name":"moduleFeeEth","type":"uint256"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"bytes32","name":"dataHash","type":"bytes32"}],"internalType":"struct ProgramTypes.Trade","name":"trade","type":"tuple"}],"name":"settleCompute","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"details":"Installed only through the fixed governance factory. The personal fee recipient and its 1.2% allocation remain outside program authority.","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{"settleCompute((uint256,address,address,bool,int128,int128,uint256,uint256,uint256,uint256,bytes32))":{"notice":"Settle compute even when the inner program cannot execute. Anyone may submit an original pending receipt, once, to a fixed collector."}},"notice":"Fixed allocation boundary for Claus' reviewed program lane.","version":1}},"settings":{"compilationTarget":{"src/ComputeProtectedProgram.sol":"ComputeProtectedProgram"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[],"viaIR":true},"sources":{"src/ComputeProtectedProgram.sol":{"keccak256":"0xce5f3c78af9171740bfa3c2054c5a3863a98e94a51b284778010616a06382bd5","license":"MIT","urls":["bzz-raw://a48906485b2ae149f2664374fd1d4e823ecdb313c9ded36eb7746cb30d5e13c9","dweb:/ipfs/QmPEeJggFmZ9iAZq8L5Q5wHjG7NR3DQMbAQQoaXRsXc71A"]},"src/IClausTradeProgram.sol":{"keccak256":"0xea91e1d61152d4e7bb7693429028a3358308eb46857dcffa25275bfcb3f293b0","license":"MIT","urls":["bzz-raw://fb10700139b9ca8628e798cc93c0eff792c48d1bfac25393e2e2e1d1ce5203e3","dweb:/ipfs/Qmd5hMuHRi6YhxFVC7hWrhmwbndUaZfNx5HkAbpwUAJNHz"]}},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"},"t_mapping(t_uint256,t_bool)":{"key":"t_uint256","label":"mapping(uint256 => bool)","value":"t_bool","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_mapping(t_uint256,t_bool)","astId":723,"label":"computeSettled","offset":0,"contract":"src/ComputeProtectedProgram.sol:ComputeProtectedProgram"}]},"transientStorageLayout":null,"userdoc":{"kind":"user","notice":"Fixed allocation boundary for Claus' reviewed program lane.","methods":{"settleCompute((uint256,address,address,bool,int128,int128,uint256,uint256,uint256,uint256,bytes32))":{"notice":"Settle compute even when the inner program cannot execute. Anyone may submit an original pending receipt, once, to a fixed collector."}},"version":1},"devdoc":{"kind":"dev","details":"Installed only through the fixed governance factory. The personal fee recipient and its 1.2% allocation remain outside program authority.","methods":{},"version":1},"sourceIds":{"src/IClausTradeProgram.sol":{"id":3},"src/ComputeProtectedProgram.sol":{"id":2}},"additionalInput":null,"stdJsonInput":{"sources":{"src/IClausTradeProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\nlibrary ProgramTypes {\n    struct Trade {\n        uint256 id; address module; address sender; bool buy;\n        int128 amount0; int128 amount1; uint256 feeEth;\n        uint256 moduleFeeEth; uint256 blockNumber; uint256 timestamp; bytes32 dataHash;\n    }\n}\ninterface IProgram {\n    function quote(address, bool, int256, uint160, uint128, bytes calldata)\n        external view returns (uint256[6] memory);\n    function onTrade(ProgramTypes.Trade calldata, bytes calldata) external returns (bytes4);\n}\n"},"src/ComputeProtectedProgram.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.26;\n\ninterface IProgramManager { function transfer(address to,uint256 id,uint256 amount) external returns(bool); }\nimport {IProgram, ProgramTypes} from \"./IClausTradeProgram.sol\";\ninterface IReceiptHost { function pending(uint256) external view returns(bytes32); }\n\n/// @notice Fixed allocation boundary for Claus' reviewed program lane.\n/// @dev Installed only through the fixed governance factory. The personal\n/// fee recipient and its 1.2% allocation remain outside program authority.\ncontract ComputeProtectedProgram is IProgram {\n    address public constant HOST=0xea0436465676eA7001535Bfe2E5cbd4b137b7f91;\n    address public constant MANAGER=0x000000000004444c5dc75cB358380D2e3dE08A90;\n    address public immutable COMPUTE;\n    uint256 public constant TREASURY_PIPS=12_000;\n    uint256 public constant COMPUTE_PIPS=1_000;\n    uint256 public constant MAX_PLAN_PIPS=149_000;\n    address public immutable program;\n    bytes32 public immutable programCodeHash;\n    mapping(uint256=>bool) public computeSettled;\n    error InvalidProgram(); error InvalidReceipt();\n    event ComputeSettled(uint256 indexed receiptId,uint256 amount);\n\n    constructor(address target,bytes32 codeHash,address compute) {\n        if(compute.code.length==0) revert InvalidProgram();\n        COMPUTE=compute;\n        if(target==address(0)||target==HOST||target==MANAGER||target==compute||target==address(this)\n            ||target.code.length==0||target.codehash!=codeHash) revert InvalidProgram();\n        program=target; programCodeHash=codeHash;\n    }\n    function defaults() private pure returns(uint256[6] memory) {\n        return [TREASURY_PIPS,3_000,1_500,2_000,3_500,COMPUTE_PIPS];\n    }\n    function quote(address sender,bool buy,int256 amountSpecified,uint160 price,uint128 liquidity,bytes calldata data)\n        external view returns(uint256[6] memory a)\n    {\n        if(program.codehash!=programCodeHash) return defaults();\n        bytes memory input=abi.encodeCall(IProgram.quote,(sender,buy,amountSpecified,price,liquidity,data));\n        address target=program; bool ok;\n        assembly(\"memory-safe\") {\n            ok:=staticcall(50000,target,add(input,32),mload(input),a,192)\n            ok:=and(ok,eq(returndatasize(),192))\n        }\n        if(!ok) return defaults();\n        a[0]=TREASURY_PIPS;\n        uint256 sum=TREASURY_PIPS;\n        for(uint256 i=1;i<6;i++) {\n            if(a[i]>MAX_PLAN_PIPS) return defaults();\n            sum+=a[i];\n        }\n        if(sum+COMPUTE_PIPS>MAX_PLAN_PIPS) return defaults();\n        // Compute replaces one tenth of a percentage point of the old owner\n        // share. An inner program's own allocation remains available to it.\n        a[5]+=COMPUTE_PIPS;\n    }\n    function computeAmount(ProgramTypes.Trade calldata trade) public pure returns(uint256 amount) {\n        if((trade.buy&&trade.amount0>0)||(!trade.buy&&trade.amount0<0)) revert InvalidReceipt();\n        // The core records pool deltas before hook fees: buy gross is the ETH\n        // spent by the pool plus the fee, sell gross is the pool's ETH output.\n        uint256 gross=trade.buy?uint256(-int256(trade.amount0))+trade.feeEth:uint256(int256(trade.amount0));\n        amount=gross*COMPUTE_PIPS/1_000_000;\n        if(amount>trade.moduleFeeEth) revert InvalidReceipt();\n    }\n    /// @notice Settle compute even when the inner program cannot execute.\n    /// Anyone may submit an original pending receipt, once, to a fixed collector.\n    function settleCompute(ProgramTypes.Trade calldata trade) public {\n        if(trade.module!=address(this)) revert InvalidReceipt();\n        if(msg.sender!=HOST&&IReceiptHost(HOST).pending(trade.id)!=keccak256(abi.encode(trade))) revert InvalidReceipt();\n        if(computeSettled[trade.id]) return;\n        uint256 amount=computeAmount(trade);\n        computeSettled[trade.id]=true;\n        if(amount!=0&&!IProgramManager(MANAGER).transfer(COMPUTE,0,amount)) revert InvalidReceipt();\n        emit ComputeSettled(trade.id,amount);\n    }\n    function onTrade(ProgramTypes.Trade calldata trade,bytes calldata data) external returns(bytes4) {\n        if(msg.sender!=HOST||trade.module!=address(this)||program.codehash!=programCodeHash) revert InvalidReceipt();\n        settleCompute(trade);\n        uint256 programFee=trade.moduleFeeEth-computeAmount(trade);\n        if(programFee!=0&&!IProgramManager(MANAGER).transfer(program,0,programFee)) revert InvalidReceipt();\n        ProgramTypes.Trade memory inner=trade;\n        inner.moduleFeeEth=programFee;\n        if(IProgram(program).onTrade(inner,data)!=IProgram.onTrade.selector) revert InvalidReceipt();\n        return IProgram.onTrade.selector;\n    }\n}\n"}},"language":"Solidity","settings":{"viaIR":true,"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"runs":200,"enabled":true},"evmVersion":"cancun"}},"stdJsonOutput":{"sources":{"src/IClausTradeProgram.sol":{"id":3},"src/ComputeProtectedProgram.sol":{"id":2}},"contracts":{"src/ComputeProtectedProgram.sol":{"ComputeProtectedProgram":{"abi":[{"type":"constructor","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"codeHash","type":"bytes32","internalType":"bytes32"},{"name":"compute","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"InvalidProgram","type":"error","inputs":[]},{"name":"InvalidReceipt","type":"error","inputs":[]},{"name":"ComputeSettled","type":"event","inputs":[{"name":"receiptId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"COMPUTE","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"COMPUTE_PIPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"HOST","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"MANAGER","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"MAX_PLAN_PIPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"TREASURY_PIPS","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"computeAmount","type":"function","inputs":[{"name":"trade","type":"tuple","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"module","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"amount0","type":"int128","internalType":"int128"},{"name":"amount1","type":"int128","internalType":"int128"},{"name":"feeEth","type":"uint256","internalType":"uint256"},{"name":"moduleFeeEth","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"dataHash","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ProgramTypes.Trade"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"name":"computeSettled","type":"function","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"onTrade","type":"function","inputs":[{"name":"trade","type":"tuple","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"module","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"amount0","type":"int128","internalType":"int128"},{"name":"amount1","type":"int128","internalType":"int128"},{"name":"feeEth","type":"uint256","internalType":"uint256"},{"name":"moduleFeeEth","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"dataHash","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ProgramTypes.Trade"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"name":"program","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"programCodeHash","type":"function","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"quote","type":"function","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"price","type":"uint160","internalType":"uint160"},{"name":"liquidity","type":"uint128","internalType":"uint128"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"a","type":"uint256[6]","internalType":"uint256[6]"}],"stateMutability":"view"},{"name":"settleCompute","type":"function","inputs":[{"name":"trade","type":"tuple","components":[{"name":"id","type":"uint256","internalType":"uint256"},{"name":"module","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"amount0","type":"int128","internalType":"int128"},{"name":"amount1","type":"int128","internalType":"int128"},{"name":"feeEth","type":"uint256","internalType":"uint256"},{"name":"moduleFeeEth","type":"uint256","internalType":"uint256"},{"name":"blockNumber","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"},{"name":"dataHash","type":"bytes32","internalType":"bytes32"}],"internalType":"struct ProgramTypes.Trade"}],"outputs":[],"stateMutability":"nonpayable"}],"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"codeHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"compute\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidProgram\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReceipt\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"receiptId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ComputeSettled\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMPUTE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COMPUTE_PIPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"HOST\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANAGER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PLAN_PIPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TREASURY_PIPS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeEth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"moduleFeeEth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct ProgramTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"name\":\"computeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"computeSettled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeEth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"moduleFeeEth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct ProgramTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onTrade\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"program\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"price\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256[6]\",\"name\":\"a\",\"type\":\"uint256[6]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"feeEth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"moduleFeeEth\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct ProgramTypes.Trade\",\"name\":\"trade\",\"type\":\"tuple\"}],\"name\":\"settleCompute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Installed only through the fixed governance factory. The personal fee recipient and its 1.2% allocation remain outside program authority.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"settleCompute((uint256,address,address,bool,int128,int128,uint256,uint256,uint256,uint256,bytes32))\":{\"notice\":\"Settle compute even when the inner program cannot execute. Anyone may submit an original pending receipt, once, to a fixed collector.\"}},\"notice\":\"Fixed allocation boundary for Claus' reviewed program lane.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ComputeProtectedProgram.sol\":\"ComputeProtectedProgram\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"src/ComputeProtectedProgram.sol\":{\"keccak256\":\"0xce5f3c78af9171740bfa3c2054c5a3863a98e94a51b284778010616a06382bd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a48906485b2ae149f2664374fd1d4e823ecdb313c9ded36eb7746cb30d5e13c9\",\"dweb:/ipfs/QmPEeJggFmZ9iAZq8L5Q5wHjG7NR3DQMbAQQoaXRsXc71A\"]},\"src/IClausTradeProgram.sol\":{\"keccak256\":\"0xea91e1d61152d4e7bb7693429028a3358308eb46857dcffa25275bfcb3f293b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb10700139b9ca8628e798cc93c0eff792c48d1bfac25393e2e2e1d1ce5203e3\",\"dweb:/ipfs/Qmd5hMuHRi6YhxFVC7hWrhmwbndUaZfNx5HkAbpwUAJNHz\"]}},\"version\":1}","userdoc":{"kind":"user","notice":"Fixed allocation boundary for Claus' reviewed program lane.","methods":{"settleCompute((uint256,address,address,bool,int128,int128,uint256,uint256,uint256,uint256,bytes32))":{"notice":"Settle compute even when the inner program cannot execute. Anyone may submit an original pending receipt, once, to a fixed collector."}},"version":1},"devdoc":{"kind":"dev","details":"Installed only through the fixed governance factory. The personal fee recipient and its 1.2% allocation remain outside program authority.","methods":{},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"},"t_mapping(t_uint256,t_bool)":{"key":"t_uint256","label":"mapping(uint256 => bool)","value":"t_bool","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_mapping(t_uint256,t_bool)","astId":723,"label":"computeSettled","offset":0,"contract":"src/ComputeProtectedProgram.sol:ComputeProtectedProgram"}]},"transientStorageLayout":null,"evm":{"bytecode":{"object":"60e03461017757601f610ff238819003918201601f19168301916001600160401b0383118484101761017b57808492606094604052833981010312610177576100478161018f565b61005860406020840151930161018f565b803b156101005760808190526001600160a01b0382168015918215610159575b8215610140575b821561012d575b508115610123575b50801561011a575b801561010f575b6101005760a05260c052604051610e4e90816101a4823960805181818160fb01526109f3015260a05181818161021f0152818161046f01528181610563015281816106080152610c51015260c05181818160bf0152818161062a0152610c750152f35b6322d55eab60e01b5f5260045ffd5b5081813f141561009d565b50803b15610096565b905030145f61008e565b6001600160a01b0316811491505f610086565b6e04444c5dc75cb358380d2e3de08a908214925061007f565b73ea0436465676ea7001535bfe2e5cbd4b137b7f9182149250610078565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036101775756fe60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033","sourceMap":"542:4155:2:-:0;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;1266:19;;:22;1263:50;;1323:15;;;;-1:-1:-1;;;;;542:4155:2;;1351:18;;;:32;;;;-1:-1:-1;1351:49:2;;;;-1:-1:-1;1351:66:2;;;;-1:-1:-1;1351:89:2;;;;;-1:-1:-1;1351:125:2;;;;;-1:-1:-1;1351:152:2;;;;-1:-1:-1;1348:180:2;;1538:14;;1554:24;;542:4155;;;;;;;;1323:15;542:4155;;;;;;;;;;1538:14;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;1554:24;542:4155;;;;;;;;;;;;;;;;1348:180;1297:16;;;-1:-1:-1;1512:16:2;;-1:-1:-1;1512:16:2;1351:152;1478:15;;;;:25;;1351:152;;:125;1455:18;;;:21;1351:125;;:89;1435:4;;;1419:21;1351:89;;;:66;-1:-1:-1;;;;;542:4155:2;1402:15;;;-1:-1:-1;1351:66:2;;;:49;702:42;1385:15;;;-1:-1:-1;1351:49:2;;:32;622:42;1371:12;;;-1:-1:-1;1351:32:2;;542:4155;-1:-1:-1;542:4155:2;;;;;;-1:-1:-1;542:4155:2;;;;;-1:-1:-1;542:4155:2;;;;-1:-1:-1;;;;;542:4155:2;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"60806040526004361015610011575f80fd5b5f3560e01c80631853e080146106ff5780631b2df850146106d657806334aafef6146106ba57806349f289dc1461068c57806363984dcf1461066f578063676bab01146102865780636795b3f41461026a5780637d2152751461024e578063c860ebc61461020a578063d7273a77146101dc578063dc88d0cf1461012a578063eeb2bb24146100e65763ff99395b146100a8575f80fd5b346100e2575f3660031901126100e25760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5f80fd5b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e25760c03660031901126100e2576004356001600160a01b03811681036100e2576024359081151582036100e257606435916001600160a01b03831683036100e2576084356001600160801b03811681036100e25760a4359367ffffffffffffffff85116100e2576101a66101b2953690600401610723565b94909360443591610c35565b604051905f825b600682106101c65760c084f35b60208060019285518152019301910190916101b9565b346100e25760203660031901126100e2576004355f525f602052602060ff60405f2054166040519015158152f35b346100e2575f3660031901126100e2576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100e2575f3660031901126100e25760206040516103e88152f35b346100e2576101603660031901126100e2576102846108a9565b005b346100e257366003190161018081126100e257610160136100e2576101643567ffffffffffffffff81116100e2576102c2903690600401610723565b73ea0436465676ea7001535bfe2e5cbd4b137b7f913314801590610650575b8015610605575b6104db576102f46108a9565b60e43591610300610779565b808403938085116105f15714158061054c575b6104db5760405191610160830183811067ffffffffffffffff821117610538576040526004358352602435936001600160a01b03851685036100e257602084019485526044356001600160a01b03811681036100e2576040850190815260643580151581036100e2576060860190815260843580600f0b81036100e2576080870190815260a43580600f0b81036100e25760a0880190815260c088019060c435825260e08901926101008a01946101043586526101208b01966101243588526101408c0198610144358a5286526040519c8d809d63676bab0160e01b8252519060040152600160a01b6001900390511660248d0152600160a01b6001900390511660448c015251151560648b015251600f0b60848a015251600f0b60a48901525160c48801525160e48701525161010486015251610124850152516101448401526101648301610180905261018483019061046d92610889565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691839103815a6020945f91f190811561052d575f916104ea575b506001600160e01b03191663989454ff60e01b016104db5760405163676bab0160e01b8152602090f35b63300262ab60e21b5f5260045ffd5b90506020813d602011610525575b816105056020938361084f565b810103126100e257516001600160e01b0319811681036100e257816104b1565b3d91506104f8565b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b506040516304ade6db60e11b815260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201525f60248201528360448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f916105c2575b5015610313565b6105e4915060203d6020116105ea575b6105dc818361084f565b810190610871565b846105bb565b503d6105d2565b634e487b7160e01b5f52601160045260245ffd5b507f00000000000000000000000000000000000000000000000000000000000000003f7f000000000000000000000000000000000000000000000000000000000000000014156102e8565b506024356001600160a01b038116908181036100e257503014156102e1565b346100e2575f3660031901126100e2576020604051620246088152f35b346100e2575f3660031901126100e257602060405173ea0436465676ea7001535bfe2e5cbd4b137b7f918152f35b346100e2575f3660031901126100e2576020604051612ee08152f35b346100e2575f3660031901126100e25760206040516e04444c5dc75cb358380d2e3de08a908152f35b346100e2576101603660031901126100e257602061071b610779565b604051908152f35b9181601f840112156100e25782359167ffffffffffffffff83116100e257602083818601950101116100e257565b3580151581036100e25790565b3580600f0b81036100e25790565b919082018092116105f157565b6064358015801582141590816100e257829081610835575b811561080c575b506104db576100e257156107f75760843580600f0b908181036100e25750600160ff1b81146105f1576107d09060c435905f0361076c565b6103e88102908082046103e814901517156105f157620f424090049060e43582116104db57565b60843580600f0b908181036100e257506107d0565b9150505f908061081d575b5f610798565b5060843580600f0b8082036100e2575f915012610817565b905060843580600f0b8082036100e2575f91501390610791565b90601f8019910116810190811067ffffffffffffffff82111761053857604052565b908160209103126100e2575180151581036100e25790565b908060209392818452848401375f828201840152601f01601f1916010190565b6024356001600160a01b0381168082036100e2573081036104db5773ea0436465676ea7001535bfe2e5cbd4b137b7f913314159182610ae8575b50506104db57600435805f525f60205260ff60405f205416610ae5576004606461090c81610751565b80610ace575b8015610aa6575b610a975761092690610751565b15610a83576109376080820161075e565b600f0b600160ff1b8114610a70576109569060c0830135905f0361076c565b6103e88102908082046103e81490151715610a7057620f424090049060e081013582116109ce57825f525f60205260405f20600160ff19825416179055811515806109dc575b6109ce575060207f86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf62691604051908152a2565b63300262ab60e21b5f908152fd5b506040516304ade6db60e11b815260018060a01b037f000000000000000000000000000000000000000000000000000000000000000016828201525f60248201528260448201526020816064815f6e04444c5dc75cb358380d2e3de08a905af190811561052d575f91610a51575b501561099c565b610a6a915060203d6020116105ea576105dc818361084f565b5f610a4a565b601182634e487b7160e01b5f525260245ffd5b610a8f6080820161075e565b600f0b610956565b5063300262ab60e21b5f908152fd5b50610ab081610751565b15801561091957505f610ac56080840161075e565b600f0b12610919565b505f610adc6080840161075e565b600f0b13610912565b50565b6040516315edcc4760e31b8152600480359082018190529093509160208460248173ea0436465676ea7001535bfe2e5cbd4b137b7f915afa93841561052d575f94610bdc575b50604051916020830193845250604082015260443560018060a01b0381168091036100e25760608201526064358015158091036100e257608082015260843580600f0b8091036100e25760a082015260a43580600f0b8091036100e25760c082015260c43560e082015260e4356101008201526101043561012082015261012435610140820152610144356101608201526101608152610bd06101808261084f565b51902014155f806108e3565b9093506020813d602011610c08575b81610bf86020938361084f565b810103126100e25751925f610b2e565b3d9150610beb565b906006811015610c215760051b0190565b634e487b7160e01b5f52603260045260245ffd5b929396959460c095604051610c4a888261084f565b87368237987f000000000000000000000000000000000000000000000000000000000000000096873f7f000000000000000000000000000000000000000000000000000000000000000003610daa5788979593610d10936001600160801b038d999794610d0294604051988997602089019b63dc88d0cf60e01b8d5260018060a01b031660248a015215156044890152606488015260018060a01b031660848701521660a48501528960c485015260e4840191610889565b03601f19810183528261084f565b519161c350fa903d141615610d5e57612ee08252612ee060015b60068110610d6b57506103e881018091116105f1576202460810610d5e5760a082018051906103e882018092116105f15752565b9050610d68610db9565b90565b9062024608610d7a8386610c10565b5111610d9e57610d97600191610d908487610c10565b519061076c565b9101610d2a565b50509050610d68610db9565b5050505050505050509050610d685b60c0604051610dc8828261084f565b36903760405160c0810181811067ffffffffffffffff82111761053857604052612ee08152610bb860208201526105dc60408201526107d06060820152610dac60808201526103e860a08201529056fea26469706673582212202b26565147d06329d471bcab885d5a6f6eb5524ad3591571c94093258da3c50164736f6c634300081a0033","sourceMap":"542:4155:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;975:40;542:4155;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;750:32;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;937:32;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;875:5;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;-1:-1:-1;542:4155:2;;;;;;;;;;;;;;;;:::i;:::-;622:42;4146:10;:16;;;:45;;;542:4155;4146:80;;;;542:4155;4143:108;;4275:5;;:::i;:::-;4310:18;542:4155;4329:20;;;:::i;:::-;542:4155;;;;;;;;;4362:13;;:71;;;542:4155;4359:99;;542:4155;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;-1:-1:-1;;;;;542:4155:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4557:37;;542:4155;4557:37;542:4155;4557:37;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4310:18;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4566:7;-1:-1:-1;;;;;542:4155:2;;;;4557:37;542:4155;4557:37;542:4155;4557:37;542:4155;4557:37;;;;;;;542:4155;4557:37;;;542:4155;-1:-1:-1;;;;;;;542:4155:2;-1:-1:-1;;;4557:64:2;4554:92;;542:4155;;-1:-1:-1;;;542:4155:2;;;;;4554:92;4235:16;;;542:4155;4630:16;542:4155;;4630:16;4557:37;;;542:4155;4557:37;;542:4155;4557:37;;;;;;542:4155;4557:37;;;:::i;:::-;;;542:4155;;;;;-1:-1:-1;;;;;;542:4155:2;;;;;;4557:37;;;;;;-1:-1:-1;4557:37:2;;;542:4155;;;;;;;;;;;;;;;;;;;;;4362:71;542:4155;;;;;;4378:55;;542:4155;;;;;4412:7;542:4155;;4378:55;;542:4155;;;;;;;;;;;;4378:55;;;542:4155;702:42;4378:55;;;;;;;542:4155;4378:55;;;4362:71;4377:56;;4362:71;;4378:55;;;;542:4155;4378:55;542:4155;4378:55;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;542:4155;;;;;;;;;;;;4146:80;4193:7;;:16;4211:15;4193:33;;4146:80;;:45;-1:-1:-1;4164:12:2;542:4155;-1:-1:-1;;;;;542:4155:2;;;;;;;;4186:4;;4164:27;;4146:45;;542:4155;;;;;;-1:-1:-1;;542:4155:2;;;;;;;924:7;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;622:42;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;826:6;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;702:42;542:4155;;;;;;;;;-1:-1:-1;;542:4155:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;2759:574::-;2867:9;542:4155;;;;;;;;;;;;;;2867:26;;;2759:574;2866:59;;;;2759:574;2863:87;;;542:4155;;3133:85;;;3159:13;542:4155;;;;;;;;;;-1:-1:-1;;;;542:4155:2;;;;3143:44;542:4155;3175:12;542:4155;;-1:-1:-1;542:4155:2;3143:44;:::i;:::-;875:5;542:4155;;;;;;875:5;542:4155;;;;;;;3254:9;542:4155;;;3283:18;542:4155;3276:25;;3273:53;;2759:574::o;3133:85::-;3203:13;542:4155;;;;;;;;;;3133:85;;;2866:59;2898:9;;;-1:-1:-1;542:4155:2;2897:27;;;2866:59;;;;2897:27;2909:13;;542:4155;;;;;;;;;-1:-1:-1;542:4155:2;2909:15;;2897:27;;2867:26;2878:13;;;542:4155;;;;;;;;;2892:1;542:4155;2878:15;;2867:26;;;542:4155;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;542:4155:2;;;;;;;;-1:-1:-1;;542:4155:2;;;;:::o;3496:535::-;3574:12;542:4155;-1:-1:-1;;;;;542:4155:2;;;;;;;3596:4;3574:27;;3571:55;;622:42;3639:10;:16;;:84;;;;3496:535;3636:112;;;;542:4155;;;-1:-1:-1;542:4155:2;-1:-1:-1;3574:12:2;542:4155;;;-1:-1:-1;542:4155:2;;;3758:36;;542:4155;2867:9;;;;:::i;:::-;:26;;;3496:535;2866:59;;;;3496:535;2863:87;;3133:9;;;:::i;:::-;:85;;;3159:13;;;;;:::i;:::-;542:4155;;-1:-1:-1;;;542:4155:2;;;;3143:44;3175:12;;;;542:4155;;-1:-1:-1;542:4155:2;3143:44;:::i;:::-;875:5;542:4155;;;;;;875:5;542:4155;;;;;;;3254:9;542:4155;;3283:18;;;;542:4155;3276:25;;3273:53;;542:4155;-1:-1:-1;542:4155:2;-1:-1:-1;3574:12:2;542:4155;;-1:-1:-1;542:4155:2;;;;;;;;;;3890:9;;;:63;;;3133:85;3887:91;;542:4155;3574:12;3993:31;542:4155;;;;;;3993:31;3496:535::o;3887:91::-;-1:-1:-1;;;;3962:16:2;;;;3890:63;542:4155;;;;;;3902:51;;542:4155;;;;;3936:7;542:4155;3902:51;;;542:4155;-1:-1:-1;3574:12:2;542:4155;;;;;;;;3574:12;3902:51;;;-1:-1:-1;702:42:2;3902:51;;;;;;;-1:-1:-1;3902:51:2;;;3890:63;3901:52;;3890:63;;3902:51;;;;3574:12;3902:51;3574:12;3902:51;;;;;;;:::i;:::-;;;;542:4155;;;;;;-1:-1:-1;542:4155:2;;;-1:-1:-1;542:4155:2;3133:85;3203:13;;;;;:::i;:::-;542:4155;;3133:85;;2863:87;-1:-1:-1;;;;;2934:16:2;;;;2866:59;2898:9;;;;:::i;:::-;2897:10;:27;;2866:59;2897:27;2909:13;-1:-1:-1;2909:13:2;;;;;:::i;:::-;542:4155;;2909:15;2866:59;;2867:26;2878:13;-1:-1:-1;2878:13:2;;;;;:::i;:::-;542:4155;;2878:15;2867:26;;3758:36;3787:7;:::o;3639:84::-;542:4155;;-1:-1:-1;;;3657:36:2;;542:4155;;;3657:36;;;542:4155;;;;;-1:-1:-1;542:4155:2;3574:12;542:4155;3574:12;542:4155;622:42;3657:36;;;;;;;-1:-1:-1;3657:36:2;;;3639:84;542:4155;;;3705:17;3574:12;3705:17;;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:17;;;;;;:::i;:::-;542:4155;3695:28;;3657:66;;3639:84;;;;3657:36;;;;3574:12;3657:36;;3574:12;3657:36;;;;;;3574:12;3657:36;;;:::i;:::-;;;542:4155;;;;;3657:36;;;;;;;-1:-1:-1;3657:36:2;;542:4155;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;1731:1023;;;;;;542:4155;;;;;;;;:::i;:::-;;;;;1914:7;;:16;;;1932:15;1914:33;1911:55;;542:4155;;;;1995:80;542:4155;-1:-1:-1;;;;;542:4155:2;;;;;;;;1995:80;;;;;;;;;;;;542:4155;;;;;;1995:80;;;542:4155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1995:80;542:4155;;1995:80;;;;;;:::i;:::-;2126:158;;;;;;;;2296:3;2293:25;;826:6;542:4155;;826:6;542:4155;2407:3;542:4155;2407:3;;;;542:4155;875:5;542:4155;;;;;;;924:7;-1:-1:-1;2513:52:2;;542:4155;;;;;;875:5;542:4155;;;;;;;;1731:1023::o;2513:52::-;2555:10;;;;:::i;:::-;2548:17;:::o;2411:3::-;2433:4;924:7;2433:4;;;;:::i;:::-;542:4155;2433:18;2430:40;;2484:9;542:4155;2489:4;;;;;:::i;:::-;542:4155;2484:9;;:::i;:::-;2411:3;542:4155;2395:11;;2430:40;2460:10;;;;;;:::i;1911:55::-;1956:10;;;;;;;;;;;;1590:136;542:4155;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;826:6;542:4155;;1682:5;1667:52;;;542:4155;1688:5;542:4155;1667:52;;542:4155;1694:5;1667:52;;;542:4155;1700:5;1667:52;;;542:4155;875:5;1667:52;;;542:4155;1590:136;:::o","linkReferences":{},"immutableReferences":{"706":[{"start":251,"length":32},{"start":2547,"length":32}],"717":[{"start":543,"length":32},{"start":1135,"length":32},{"start":1379,"length":32},{"start":1544,"length":32},{"start":3153,"length":32}],"719":[{"start":191,"length":32},{"start":1578,"length":32},{"start":3189,"length":32}]}}}}}}},"signatures":{"function":[{"signature":"COMPUTE()","signatureHash4":"0xeeb2bb24","signatureHash32":"0xeeb2bb244268bd15d0c17811c5dd27c6ffcf66b79d27cbe4af61f974a24f9d6b"},{"signature":"computeAmount((uint256,address,address,bool,int128,int128,uint256,uint256,uint256,uint256,bytes32))","signatureHash4":"0x1853e080","signatureHash32":"0x1853e08046b34a3d8562384fb128f3139630c07a95191351496579b0ce1563a3"},{"signature":"COMPUTE_PIPS()","signatureHash4":"0x7d215275","signatureHash32":"0x7d215275c8c277d08cdae757cc2ec2672131c6675d61c528353591a639d60246"},{"signature":"computeSettled(uint256)","signatureHash4":"0xd7273a77","signatureHash32":"0xd7273a77a4128f926e5f65cd7d84b19b408754825337d22ff5d5af6620feb7c0"},{"signature":"HOST()","signatureHash4":"0x49f289dc","signatureHash32":"0x49f289dc6d1588d3d695552a5a54cea9194339e5d93aee2291fb17ec0355e742"},{"signature":"MANAGER()","signatureHash4":"0x1b2df850","signatureHash32":"0x1b2df8504d1c5665ab6e26aa2f40fa92dc0309df6a26c52108c627f8ceb73e90"},{"signature":"MAX_PLAN_PIPS()","signatureHash4":"0x63984dcf","signatureHash32":"0x63984dcffa9768823603faa1bdc78270e882a1feb7dcaa12bcf42000142197dc"},{"signature":"onTrade((uint256,address,address,bool,int128,int128,uint256,uint256,uint256,uint256,bytes32),bytes)","signatureHash4":"0x676bab01","signatureHash32":"0x676bab014451b1fe7d43e9ddbe7b05c73328c33e9f5f70d61fe914770a1b11dc"},{"signature":"program()","signatureHash4":"0xc860ebc6","signatureHash32":"0xc860ebc6648accc7aec9ae1deae2529f439e38afb6729549012636a4e417bea2"},{"signature":"programCodeHash()","signatureHash4":"0xff99395b","signatureHash32":"0xff99395b27b1c257c4e5b958baaca9036aa087c92049670933fd9fb5dcdca63c"},{"signature":"quote(address,bool,int256,uint160,uint128,bytes)","signatureHash4":"0xdc88d0cf","signatureHash32":"0xdc88d0cfea14d08e5a4cd52b53ca67482726f87b9af35b8caa32e7a8998ae66c"},{"signature":"settleCompute((uint256,address,address,bool,int128,int128,uint256,uint256,uint256,uint256,bytes32))","signatureHash4":"0x6795b3f4","signatureHash32":"0x6795b3f4376acbb5d9deeba86bc8ff48cc8f86bffe7807f289628eec13b20493"},{"signature":"TREASURY_PIPS()","signatureHash4":"0x34aafef6","signatureHash32":"0x34aafef65ff7ab909758d89ea18644df65cb417c0546e0d95b234b97ad821bd0"}],"event":[{"signature":"ComputeSettled(uint256,uint256)","signatureHash4":"0x86991e22","signatureHash32":"0x86991e2242f07a544ec806c01f60240472088c7cf32a9184503802e28a1cf626"}],"error":[{"signature":"InvalidProgram()","signatureHash4":"0x22d55eab","signatureHash32":"0x22d55eab7e6b156c8d99e16aecc40308b3692492d9107dff1e58e710b4390fe0"},{"signature":"InvalidReceipt()","signatureHash4":"0xc0098aac","signatureHash32":"0xc0098aacd273a10385e30479610ce50cd3a8a5e155c43cfb10a0375bbb878729"}]},"proxyResolution":{"isProxy":false,"proxyType":null,"implementations":[]},"match":"exact_match","chainId":"1","address":"0xDE812D12C3F02B9582c4775585de928FA7142D71"}